|
Как повернуть таблицу
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите пожалуйста как осуществить поворот, чтобы получить из таблицы 1, таблицу 2. Пробую через PIVOT, остается только по одной строке для каждого магазина вместо двух. Исходная таблица 1 Магазин Дата Продано -------------------------------------- Магазин 1 01.02.2001 3 Магазин 1 01.02.2001 4 Магазин 1 02.02.2001 15 Магазин 1 02.02.2001 24 Магазин 2 01.02.2001 11 Магазин 2 01.02.2001 34 Магазин 2 02.02.2001 1 Магазин 2 02.02.2001 5 Нужно получить таблицу 2 Магазин 01.02.2001 02.02.2001 ---------------------------------------------- Магазин 1 3 15 Магазин 1 4 24 Магазин 2 11 1 Магазин 2 34 5 CREATE TABLE #m(Shop nvarchar(50),[Date] datetime, Sold int) INSERT INTO #m(Shop, [Date], Sold) VALUES('Магазин 1','01.02.2001',3) INSERT INTO #m(Shop, [Date], Sold) VALUES('Магазин 1','01.02.2001',4) INSERT INTO #m(Shop, [Date], Sold) VALUES('Магазин 1','02.02.2001',15) INSERT INTO #m(Shop, [Date], Sold) VALUES('Магазин 1','02.02.2001',24) INSERT INTO #m(Shop, [Date], Sold) VALUES('Магазин 2','01.02.2001',11) INSERT INTO #m(Shop, [Date], Sold) VALUES('Магазин 2','01.02.2001',34) INSERT INTO #m(Shop, [Date], Sold) VALUES('Магазин 2','02.02.2001',1) INSERT INTO #m(Shop, [Date], Sold) VALUES('Магазин 2','02.02.2001',5) SELECT Shop, [01.02.2001], [02.02.2001] FROM #m PIVOT (MIN(Sold) FOR [Date] IN ([01.02.2001], [02.02.2001])) p ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 14:39 |
|
Как повернуть таблицу
|
|||
---|---|---|---|
#18+
Tenьka Пробую через PIVOT, остается только по одной строке для каждого магазина вместо двух. Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Хотя такое разделение странно, нужно же, что бы в строках поля Shop, [Date] были дополнены каким то атрибутом, делающим этот набор уникальным (например, утренние или вечерние продажи, или что то такое) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 15:26 |
|
Как повернуть таблицу
|
|||
---|---|---|---|
#18+
alexeyvg, Спасибо большое! А если делать реализацию через групповые операции: SELECT Shop, MIN(CASE [Date] WHEN '01.02.2001' THEN Sold ELSE NULL END) '01.02.2001', MIN(CASE [Date] WHEN '02.02.2001' THEN Sold ELSE NULL END) '02.02.2001' FROM #m GROUP BY Shop этот запрос так же возвращает только по 1 строке возможно ли получить данные при группировке в виде таблицы 2? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 16:04 |
|
Как повернуть таблицу
|
|||
---|---|---|---|
#18+
Tenьka А если делать реализацию через групповые операции: этот запрос так же возвращает только по 1 строке возможно ли получить данные при группировке в виде таблицы 2? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 16:07 |
|
Как повернуть таблицу
|
|||
---|---|---|---|
#18+
alexeyvg, Спасибо Вам еще раз большое! Получилось вот так: SELECT t.Shop, MIN(CASE [Date] WHEN '01.02.2001' THEN Sold ELSE NULL END) '01.02.2001', MIN(CASE [Date] WHEN '02.02.2001' THEN Sold ELSE NULL END) '02.02.2001' FROM ( SELECT Shop, [Date], Sold, row_number() over(partition by Shop, [Date] order by Sold) as num FROM #m ) t GROUP BY t.Shop, num ORDER BY Shop ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 16:14 |
|
|
start [/forum/topic.php?fid=46&fpage=64&tid=1686301]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 337ms |
total: | 465ms |
0 / 0 |