Оценка ближайшей будущей даты на сегодняшний день из 4 столбцов с датами в SQL - PullRequest
0 голосов
/ 31 января 2020

У меня есть таблица с 4 столбцами дат. Мне нужно вычислить в столбце 5 дату, которая является ближайшей будущей датой на сегодняшний день, и отобразить ее в той же строке, например, 20-й день рождения ближе к 85-летию или 10-й день рождения ближе, чем 85-й день рождения. NB 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 

1 Ответ

0 голосов
/ 31 января 2020

Следующий запрос использует от CROSS APPLY до UNPIVOT 4 столбца даты, а затем получает один из них, ближайший к текущей дате. TOP 1 - получить только одну строку ie ближайшую дату

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
...