Sql查询需要将多个日期列排序在一起

Jus*_*n C 3 sql sql-server select sql-order-by

我有一个包含三个日期字段的表,一个开始日期,中期日期和结束日期.我想创建一个单一的查询来从表中获取最新的活动.在这种情况下,活动是更新日期字段的时间.

无需编写3个单独的查询,然后将我的代码中的值组合起来以获取10个最近的活动,我可以在一个查询中执行此操作.所以现在我有

    SELECT TOP 10 * FROM core_table 
    ORDER BY [start_date] Desc

    SELECT TOP 10 * FROM core_table 
    ORDER BY [process_date] Desc

    SELECT TOP 10 * FROM core_table 
    ORDER BY [archive_date] Desc
Run Code Online (Sandbox Code Playgroud)

所以我想把这三个查询的结果拉到一起,根据所有三个日期获得前10个条目.

Rap*_*aus 6

基于Itiong_sh给出的答案,它不完全相同:你可以在ORDER BY中完成

select top 10 * from core_table
order by
  CASE
      WHEN start_date >= process_date AND start_date >= archive_date 
          THEN  start_date
      WHEN process_date >= archive_date 
          THEN  process_date
      ELSE  archive_date
  END
 DESC
Run Code Online (Sandbox Code Playgroud)