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

Откуда:
Сообщений: 12
есть таблица с датой производства и кол-во, которое можно произвести в эту дату
dateqty
2013-07-252
2013-07-27 4
2013-07-28 1

как можно построить запрос, что бы получить дату производства для 5 изделий
24 июл 13, 15:44    [14611382]     Ответить | Цитировать Сообщить модератору
 Re: построить запрос для получени даты из набора данных по условию выборки  [new]
qwerty112
Guest
mcwolf_666,

результат какой, на твоих данных, должен быть ?
24 июл 13, 16:03    [14611619]     Ответить | Цитировать Сообщить модератору
 Re: построить запрос для получени даты из набора данных по условию выборки  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
накопительный итог, нужна дата, когда sum(qty) станет >= 5
24 июл 13, 16:05    [14611645]     Ответить | Цитировать Сообщить модератору
 Re: построить запрос для получени даты из набора данных по условию выборки  [new]
mcwolf_666
Member

Откуда:
Сообщений: 12
Cygapb-007, как сделать такой запрос?
24 июл 13, 16:11    [14611699]     Ответить | Цитировать Сообщить модератору
 Re: построить запрос для получени даты из набора данных по условию выборки  [new]
mcwolf_666
Member

Откуда:
Сообщений: 12
qwerty112, результат - вторая строка
24 июл 13, 16:12    [14611706]     Ответить | Цитировать Сообщить модератору
 Re: построить запрос для получени даты из набора данных по условию выборки  [new]
Cygapb-007
Member

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

RTFM "накопительный итог"
24 июл 13, 16:14    [14611734]     Ответить | Цитировать Сообщить модератору
 Re: построить запрос для получени даты из набора данных по условию выборки  [new]
Гость333
Member

Откуда:
Сообщений: 3683
mcwolf_666
как можно построить запрос

Вот так:
with cte as
(  select date, qty
   from (values(cast('2013-07-25' as date), 2),
               (cast('2013-07-27' as date), 4),
               (cast('2013-07-28' as date), 1)
        ) as data(date, qty)
)
select top(1) c.date
from cte c
order by case when sum(c.qty) over(order by c.date) >= 5 then 0 else 1 end, c.date;
24 июл 13, 17:14    [14612325]     Ответить | Цитировать Сообщить модератору
 Re: построить запрос для получени даты из набора данных по условию выборки  [new]
efqwefqwe
Guest
wolf_666,

без сортировок

with d([date], qty) as
(
	select cast('20130725' as datetime), 2 union all
	select '20130727', 4 union all
	select '20130728', 1
)
select *
into t1
from d

create index idx_date on t1([date]) include(qty);

select top(1) first_value([date]) over(order by [date])
from
(
	select *, sum(qty) over(order by [date] rows between unbounded preceding and current row) rt_qty
	from t1
) t2
where rt_qty >= 5;
24 июл 13, 19:32    [14613042]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить