1
Моя таблица SQL Server имеет 200 дат в той же строке:SQL макс сервера и мин дата в строке
ID Date1 Data2 Date3 (..) Date200
Можно ли найти Min и Max дата одной строки?
Благодаря
Моя таблица SQL Server имеет 200 дат в той же строке:SQL макс сервера и мин дата в строке
ID Date1 Data2 Date3 (..) Date200
Можно ли найти Min и Max дата одной строки?
Благодаря
Один метод использует для 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
Edit - Другой вариант
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 вы используете –