Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос с непрерывной последовательностью  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с непрерывной последовательностью  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18609
abruptboy
надо на каждую дату чтоб считалось
Ну так сгенерируйте этот список дат в CTE да используйте его как опорный.
15 мар 19, 07:42    [21833224]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить