从 SQL 中的日期的 4 列中评估最接近今天的未来日期



我有一个包含 4 列日期的表格。 我需要在第 5 列中计算最接近今天的未来日期,并在同一行中显示它,例如,是 20 周年纪念日更接近 85 周年纪念日,还是 10 周年纪念日比 85 岁生日近。 注意 85 岁生日永远是最长的日期。然后,第 6 列需要显示适当的列标题

非常感谢任何人可以提供的任何帮助。

Column names / sample values
strt date     - 01/01/2010  
85th birthday - 11/12/2047   
10th anniv    - 01/01/2020  
20th anniv    - 01/01/2030  
next date     - 01/01/2030  
anniv_type    - 20th anniv 

以下查询使用CROSS APPLYUNPIVOT4 个日期列,然后获取最接近当前日期的列。TOP 1是只得到一行,即最近的日期

select  *
from    yourtable t
cross apply
(
select  top 1 *
from    
(
values  ([strt date], 'strt date'),
([85th birthday], '85th birthday'),
([10th anniv], '10th anniv'),
([20th anniv], '20th anniv')
) d ([next date], [anniv_type])
where   [next date] > getdate()
order by datediff(day, getdate(), [next date])
) n

最新更新