我有一个包含 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 APPLY
UNPIVOT
4 个日期列,然后获取最接近当前日期的列。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