Sql server 如何在非常大的表中获取max date的列名
我有一个表,其中有38列都是datetime数据类型。 我想查询每行中有最大日期的列名 我已经知道了如何确定每行的最大日期,但我不确定如何查询它来自哪个列Sql server 如何在非常大的表中获取max date的列名,sql-server,sql-server-2008,max,Sql Server,Sql Server 2008,Max,我有一个表,其中有38列都是datetime数据类型。 我想查询每行中有最大日期的列名 我已经知道了如何确定每行的最大日期,但我不确定如何查询它来自哪个列 IF OBJECT_ID('tempdb..#MaxDates') IS NOT NULL DROP TABLE #MaxDates SELECT [ColumnOne], Max( StartDate) as MaxEffDate Into #MaxDates FROM dbo.DatabaseName gr
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
用你当前的查询,你几乎得到了它。您可以使用
值
甚至交叉应用
来查找包含最大日期的列
select t.[ColumnOne], t.StartDate, d.LastUpdateDate, d.LastUpdateDateColumnName
from dbo.DatabaseName t
cross apply
(
select top 1 LastUpdateDate, LastUpdateDateColumnName
from
(
values
(Date1, 'Date1'),
(Date2, 'Date2'),
(Date3, 'Date3')
....
) as d (LastUpdateDate, LastUpdateDateColumnName)
order by LastUpdateDate desc
) d
我不太清楚问题的文本与代码和所需输出之间的关系。请阅读报告的第一段和你的问题。
select t.[ColumnOne], t.StartDate, d.LastUpdateDate, d.LastUpdateDateColumnName
from dbo.DatabaseName t
cross apply
(
select top 1 LastUpdateDate, LastUpdateDateColumnName
from
(
values
(Date1, 'Date1'),
(Date2, 'Date2'),
(Date3, 'Date3')
....
) as d (LastUpdateDate, LastUpdateDateColumnName)
order by LastUpdateDate desc
) d