Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добавление строк в разные группы товаров / 7 сообщений из 7, страница 1 из 1
17.12.2019, 17:10
    #39904223
Olips777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в разные группы товаров
есть таблица продаж
в ней сгруппировал все продажи товаров за предыдущие 5 недель, нужно добавить строки с неделями где продаж не было
есть мысль использовать оконные функции, но с реализацией пока мыслей нет

пример:
товар неделя колво
a 1 10
a 2 15
a 4 20
a 5 10
b 1 5
b 4 25
b 5 30

нужно получить:
a 1 10
a 2 15
a 3 0
a 4 20
a 5 10
b 1 5
b 2 0
b 3 0
b 4 25
b 5 30

всем спасибо за ответы!
...
Рейтинг: 0 / 0
17.12.2019, 17:20
    #39904234
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в разные группы товаров
Olips777,
Вам нужна таблица-календарь.
...
Рейтинг: 0 / 0
17.12.2019, 17:42
    #39904257
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в разные группы товаров
iiyama
Olips777,
Вам нужна таблица-календарь.

ну или хотя бы таблица с целыми числами
...
Рейтинг: 0 / 0
17.12.2019, 18:01
    #39904276
Olips777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в разные группы товаров
iiyama,

соединить с первой таблицей и затем со второй ?
Тогда по какому предикату?
...
Рейтинг: 0 / 0
24.12.2019, 14:12
    #39907492
entrypoint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в разные группы товаров
Olips777,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
DECLARE @t AS TABLE
                    ([товар]  CHAR(1) NOT NULL
                   , [неделя] TINYINT NOT NULL
                   , [колво]  INT NOT NULL
                   , PRIMARY KEY CLUSTERED([товар], [неделя])
                    );

INSERT INTO @t(
       [товар]
     , [неделя]
     , [колво]
              )
SELECT 'a',  1,  10 UNION ALL 
SELECT 'a',  2,  15 UNION ALL 
SELECT 'a',  4,  20 UNION ALL 
SELECT 'a',  5,  10 UNION ALL 
SELECT 'b',  1,  5  UNION ALL 
SELECT 'b',  4,  25 UNION ALL 
SELECT 'b',  5,  30;

WITH weeks
     AS (
     SELECT 
            [товар]
          , 1 AS             [неделя]
          , MAX([неделя]) AS aw
     FROM 
          @t
     GROUP BY 
              [товар]
     UNION ALL
     SELECT 
            [товар]
          , [неделя] + 1
          , aw
     FROM 
          weeks
     WHERE [неделя] < aw)
     SELECT 
            ISNULL(t.[товар], w.[товар]) AS   [товар]
          , ISNULL(t.[неделя], w.[неделя]) AS [неделя]
          , ISNULL(t.[колво], 0) AS           [колво]
     FROM 
          @t AS t
          FULL JOIN weeks AS w ON w.[товар] = t.[товар]
                                  AND w.[неделя] = t.[неделя]
            ORDER BY 
                     [товар]
                   , [неделя] OPTION(
                                     MAXRECURSION 0);
...
Рейтинг: 0 / 0
24.12.2019, 14:29
    #39907505
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в разные группы товаров
iiyama
Olips777,
Вам нужна таблица-календарь.
+1. Остальное чушь. :)
...
Рейтинг: 0 / 0
24.12.2019, 15:05
    #39907518
entrypoint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в разные группы товаров
L_argo,

В задаче относительный номер недели, а не календарный. Что будете городить ? )))

автор все продажи товаров за предыдущие 5 недель
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добавление строк в разные группы товаров / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]