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

Откуда:
Сообщений: 144
Есть таблицы объектов и их квот, на каждую дату. Как лучше получить список объектов+ближайших дат, с которых квота положительна непрерывно для 3 дней подряд?
+

select 1 id,1 obj,'2011-07-28' dt,0 qt
union select 2,1,'2011-07-29',0
union select 3,1,'2011-07-30',0
union select 4,1,'2011-07-31',0
union select 5,1,'2011-08-01',1
union select 6,1,'2011-08-02',1
union select 7,1,'2011-08-03',0
union select 8,1,'2011-08-04',2
union select 9,1,'2011-08-05',1
union select 10,1,'2011-08-06',1
union select 11,2,'2011-07-28',0
union select 12,2,'2011-07-29',1
union select 13,2,'2011-07-30',0
union select 14,2,'2011-07-31',2
union select 15,2,'2011-08-01',3
union select 16,2,'2011-08-02',2
union select 17,2,'2011-08-03',0
union select 18,2,'2011-08-04',1
union select 19,2,'2011-08-05',1
union select 20,2,'2011-08-06',1


Результат нужен такой:
1 2011-08-04
2 2011-07-31
Подскажите плиз путь, куда думать, - view, calculated view, sp, function. Не знаю как подступиться оптимально. Без курсора можно?
28 июл 11, 12:55    [11039121]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
ё
Guest
select t1.obj, min(t1.dt) as dt
from @t t1
inner join @t t2
  on t1.obj=t2.obj and t1.dt=t2.dt-1 
inner join @t t3
  on t2.obj=t3.obj and t2.dt=t3.dt-1 
where t1.qt>0 and t2.qt>0 and t3.qt>0
group by t1.obj
28 июл 11, 13:25    [11039343]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
select c.obj, MIN(c.dt)
from @t c
where 
	c.qt > 0
	and 3 = (select COUNT(*) from @t c1 where c1.obj = c.obj and c1.dt between c.dt and dateadd(dd, 2, c.dt) and c1.qt > 0)
group by
	c.obj
?
28 июл 11, 13:35    [11039418]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
juwdoks
Member

Откуда:
Сообщений: 144
HandKot,

Спасибо за идею! Подходит. Пока что это самый оптимальный вариант.
28 июл 11, 14:03    [11039556]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить