powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добавление строк в разные группы товаров
7 сообщений из 7, страница 1 из 1
Добавление строк в разные группы товаров
    #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
Добавление строк в разные группы товаров
    #39904234
iiyama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Olips777,
Вам нужна таблица-календарь.
...
Рейтинг: 0 / 0
Добавление строк в разные группы товаров
    #39904257
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iiyama
Olips777,
Вам нужна таблица-календарь.

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

соединить с первой таблицей и затем со второй ?
Тогда по какому предикату?
...
Рейтинг: 0 / 0
Добавление строк в разные группы товаров
    #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
Добавление строк в разные группы товаров
    #39907505
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iiyama
Olips777,
Вам нужна таблица-календарь.
+1. Остальное чушь. :)
...
Рейтинг: 0 / 0
Добавление строк в разные группы товаров
    #39907518
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
L_argo,

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

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


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