Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 выбор максимального значения из нескольких полей  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Всем привет, помогите определить максимальную дату из четырех полей

create table #dataset (
			DealID numeric(15,0) 
			,Date1 smalldatetime  
			,Date2 smalldatetime 
                        ,Date3 smalldatetime
                        ,Date4 smalldatetime   
		       ) 

insert into #dataset (DealID,Date1,Date2,Date3,Date4) select '966585','2014-01-10','2014-01-25','2014-01-11','2014-01-15'
insert into #dataset (DealID,Date1,Date2,Date3,Date4) select '966585','2014-02-11','2014-02-12','2014-01-11','2014-02-15'


То есть для первой строки это 25.01.2014, для второй 15.02.2014
10 фев 14, 11:42    [15545216]     Ответить | Цитировать Сообщить модератору
 Re: выбор максимального значения из нескольких полей  [new]
Glory
Member

Откуда:
Сообщений: 104751
UNPIVOT+GROUP BY+MAX()
10 фев 14, 11:43    [15545223]     Ответить | Цитировать Сообщить модератору
 Re: выбор максимального значения из нескольких полей  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
declare @dataset table (
			DealID numeric(15,0) 
			,Date1 smalldatetime  
			,Date2 smalldatetime 
                        ,Date3 smalldatetime
                        ,Date4 smalldatetime   
		       ) 

insert into @dataset (DealID,Date1,Date2,Date3,Date4) select '966585','20140110','20140125','20140111','20140115'
insert into @dataset (DealID,Date1,Date2,Date3,Date4) select '966585','20140211','20140212','20140111','20140215'

select
 *
from
 @dataset d cross apply
 (select max(d) from (values (d.Date1), (d.Date2), (d.Date3), (d.Date4)) t(d)) x(MaxDate);
10 фев 14, 11:58    [15545322]     Ответить | Цитировать Сообщить модератору
 Re: выбор максимального значения из нескольких полей  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Забыл, у меня уже есть
select DealID,Date1,Date2,Date3,Date4 from #dataset
необходимо прям в этот запрос добавить еще одно поле, так низя? На ум приходит только конструкция вида:

select DealID,Date1,Date2,Date3,Date4
,case when (Date1>Date2)and(Date1>Date3)and(Date1>Date4) then Date1
,case when (Date2>Date1)and(Date2>Date3)and(Date2>Date4) then Date2
,case when (Date3>Date1)and(Date3>Date2)and(Date3>Date4) then Date3
,case when (Date4>Date1)and(Date4>Date2)and(Date4>Date3) then Date4
end MaxDate
from #dataset
10 фев 14, 12:16    [15545430]     Ответить | Цитировать Сообщить модератору
 Re: выбор максимального значения из нескольких полей  [new]
Glory
Member

Откуда:
Сообщений: 104751
Евгенич
На ум приходит только конструкция вида

Ну если приходит, то добавляейте
10 фев 14, 12:24    [15545473]     Ответить | Цитировать Сообщить модератору
 Re: выбор максимального значения из нескольких полей  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Евгенич
Забыл, у меня уже есть
select DealID,Date1,Date2,Date3,Date4 from #dataset
необходимо прям в этот запрос добавить еще одно поле, так низя? На ум приходит только конструкция вида:

select DealID,Date1,Date2,Date3,Date4
,case when (Date1>Date2)and(Date1>Date3)and(Date1>Date4) then Date1
,case when (Date2>Date1)and(Date2>Date3)and(Date2>Date4) then Date2
,case when (Date3>Date1)and(Date3>Date2)and(Date3>Date4) then Date3
,case when (Date4>Date1)and(Date4>Date2)and(Date4>Date3) then Date4
end MaxDate
from #dataset
Вместо case голимого можете вставить то, что invm Вам в скобках написал...
(Без x, разумеется)
10 фев 14, 12:30    [15545503]     Ответить | Цитировать Сообщить модератору
 Re: выбор максимального значения из нескольких полей  [new]
Евгенич
Member

Откуда:
Сообщений: 274
iap
Евгенич
Забыл, у меня уже есть
select DealID,Date1,Date2,Date3,Date4 from #dataset
необходимо прям в этот запрос добавить еще одно поле, так низя? На ум приходит только конструкция вида:

select DealID,Date1,Date2,Date3,Date4
,case when (Date1>Date2)and(Date1>Date3)and(Date1>Date4) then Date1
,case when (Date2>Date1)and(Date2>Date3)and(Date2>Date4) then Date2
,case when (Date3>Date1)and(Date3>Date2)and(Date3>Date4) then Date3
,case when (Date4>Date1)and(Date4>Date2)and(Date4>Date3) then Date4
end MaxDate
from #dataset
Вместо case голимого можете вставить то, что invm Вам в скобках написал...
(Без x, разумеется)


А можно прям кодом?
10 фев 14, 12:47    [15545621]     Ответить | Цитировать Сообщить модератору
 Re: выбор максимального значения из нескольких полей  [new]
Glory
Member

Откуда:
Сообщений: 104751
Евгенич
А можно прям кодом?

15545322
10 фев 14, 12:49    [15545633]     Ответить | Цитировать Сообщить модератору
 Re: выбор максимального значения из нескольких полей  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Евгенич
iap
пропущено...
Вместо case голимого можете вставить то, что invm Вам в скобках написал...
(Без x, разумеется)


А можно прям кодом?
Прямо копипастом! Со скобками. Можно ещё алиас приписать.
Правда, должен быть SQL2008 как минимум.
Если более старый сервер, замените VALUES() на SELECT ... UNION ALL SELECT ... UNION ALL SELECT ...
10 фев 14, 12:51    [15545654]     Ответить | Цитировать Сообщить модератору
 Re: выбор максимального значения из нескольких полей  [new]
Евгенич
Member

Откуда:
Сообщений: 274
iap
Евгенич
пропущено...


А можно прям кодом?
Прямо копипастом! Со скобками. Можно ещё алиас приписать.
Правда, должен быть SQL2008 как минимум.
Если более старый сервер, замените VALUES() на SELECT ... UNION ALL SELECT ... UNION ALL SELECT ...


Всем спасибо, сделал так
iap
"замените VALUES() на SELECT ... UNION ALL SELECT ... UNION ALL"
у меня SQL2005
11 фев 14, 14:50    [15551540]     Ответить | Цитировать Сообщить модератору
 Re: выбор максимального значения из нескольких полей  [new]
guest1978
Guest
Разные варианты поиска и сравнение производительности
http://t-sql.ru/post/max_from_several_fields.aspx
12 фев 14, 07:48    [15554735]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить