1
我的SQL Server表具有相同的行200個日期:SQL Server的最大值和最小值日行
ID Date1 Data2 Date3 (..) Date200
是否有可能找到一個行的最小值和最大值的日期?
由於
我的SQL Server表具有相同的行200個日期:SQL Server的最大值和最小值日行
ID Date1 Data2 Date3 (..) Date200
是否有可能找到一個行的最小值和最大值的日期?
由於
的一種方法是使用一個CROSS APPLY
到UNPIVOT的行。 無需列出200個日期列(請注意attr.value('local-name(.)','varchar(100)') Like 'Date%'
)。
您可能還會注意到NULL將被忽略。
例
Declare @YourTable table (ID int,Date1 date,Date2 date,Date3 date)
Insert into @YourTable values
(1,'2016-01-01','2016-01-15','2016-02-01'),
(2,'2016-02-15',null,null)
Select A.ID
,C.*
From @YourTable A
Cross Apply (Select XMLData=cast((Select A.* For XML RAW) as xml)) B
Cross Apply (
Select MinDate = min(Value)
,MaxDate = max(Value)
From (
Select Value = attr.value('.','date')
From B.XMLData.nodes('/row') as A(r)
Cross Apply A.r.nodes('./@*') AS B(attr)
Where attr.value('local-name(.)','varchar(100)') Like 'Date%'
) S
) C
返回
ID MinDate MaxDate
1 2016-01-01 2016-02-01
2 2016-02-15 2016-02-15
編輯 - 另一種選擇
Select A.ID
,C.*
From @YourTable A
Cross Apply (
Select MinDate = min(Value)
,MaxDate = max(Value)
From (values (A.Date1)
,(A.Date2)
,(A.Date3)
-- .. More Columns
) C1 (Value)
) C
你的意思是這樣SELECT MAX( Date1)FROM Table或SELECT MIN(Date1)FROM Table? – Fendec
您正在使用哪種RDMS –