Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
abruptboy Member Откуда: Сообщений: 1 |
Добрый вечер. Необходима помощь в написании 2 запросов в mssql с непрерывной последовательность.Совсем уже голову сломал. есть пару вариантов но воплотить в итоговый не могу. Дана таблица: Которая содержит в себе информацию по товарам, по которым отсутствуют приходы со склада, где ID- идентификатор записи Day - дата Art - идентификатор товара Cntr- идентификатор склада Qty - остаток create table Table1 (ID integer,Day date,Art integer,Cntr integer,Qnty decimal(16, 3)) Необходимо: Запрос который покажет сколько непрерывно дней у ТП нет приходов на склад на каждую дату. Вывести поля: дата, склад, товар, остаток, кол-во дней без прихода. вариант: Выводит кол-во дней без прихода, а надо на каждую дату чтоб считалось. К примеру 28.01 - 0,29.01 - 1., 30.01 -2 это для товара 88 % create table Table1 (ID integer,Day date,Art integer,Cntr integer,Qnty decimal(16, 3)) Insert into Table1 values (1, '2018-01-28', 88, 8, 10.000), (2, '2018-01-29', 88, 8, 15.000), (3, '2018-01-30', 88, 8, 20.000), (4, '2018-01-30', 11, 5, 15.000), (5, '2018-01-29', 11, 5, 20.000), (6, '2018-07-01', 88, 5, 15.000), (7, '2018-07-02', 88, 5, 20.000), (8, '2018-07-06', 88, 5, 25.000), (9, '2018-07-04', 88, 5, 25.000); WITH dates(date,day) AS ( SELECT DISTINCT CAST(day AS DATE),day FROM Table1 ), groups as ( SELECT ROW_NUMBER() OVER (ORDER BY date) AS rn, dateadd(day, -ROW_NUMBER() OVER (ORDER BY date), date) AS grp,day FROM dates ) SELECT COUNT(*) AS day, MIN(day) AS minDate, MAX(day) AS maxDate FROM groups GROUP BY grp ORDER BY 1 DESC, 2 DESC Также надо внести сюда другие данные для вывода |
14 мар 19, 21:49 [21833075] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20960 |
|
||
15 мар 19, 07:42 [21833224] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |