У меня есть таблица, которая имеет 38 столбцов с типом данных datetime.Я хочу запросить имя столбца с максимальной датой в каждой строке.
Я выяснил, как определить максимальную дату каждой строки, но я не уверен, как запросить, из какого столбца она пришла,
IF OBJECT_ID('tempdb..#MaxDates') IS NOT NULL
DROP TABLE #MaxDates
SELECT
[ColumnOne],
Max( StartDate) as MaxEffDate
Into #MaxDates
FROM dbo.DatabaseName
group by [ColumnOne]
Select a.[ColumnOne], StartDate,
(SELECT MAX(LastUpdateDate)
FROM (VALUES
(case when (ColumnTwo) < '9999-12-31' then (ColumnTwo) else '1900-01-01' end)
) AS UpdateDate(LastUpdateDate)
) AS LastUpdateDate
From dbo.DatabaseName a
inner join #MaxDates
on a.[ColumnOne] =#MaxDates.[ColumnOne] and a.StartDate = #MaxDates.MaxEffDate
order by a.[ColumnOne] asc
Ожидаю следующий результат -
ColumnOne, StartDate, LastUpdateDate, LastUpdateDateColumnName