Как решить ошибку при попытке SQL Dynami c Unpivot - PullRequest
0 голосов
/ 25 февраля 2020

Не могли бы вы помочь мне взглянуть на мою ошибку?

Исходная таблица:

enter image description here

Таблица назначения:

enter image description here

Используйте следующий код:

Select DATE,cities,sales
From Test
UNPIVOT
( sales
For cities in (city1, city2, city3)
) AS XYZ

и результат успешен.

Однако список городов может вырасти в city4, city5 ... Так что я был пытаясь использовать Dynami c unpivot для достижения этого

Код:

DECLARE @cols AS NVARCHAR(MAX);
select @cols = COALESCE(@cols + ',', '') + quotename(COLUMN_NAME)
From (  Select column_name
        FROM information_schema.columns
        WHERE table_name = 'Test'
        AND COLUMN_NAME <> 'Date' ) AS FiledList
Select DATE,cities,sales
From Test
UNPIVOT
( sales
For cities in (@cols)
) AS XYZ

enter image description here

Кажется, что есть ошибка, и попытался пару способов, не работает.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Выберите ДАТА, города, продажи Из теста UNPIVOT (продажи Для городов в (ВЫБЕРИТЕ ГРУППУ_CONCAT (город) ИЗ городов)) AS XYZ

0 голосов
/ 25 февраля 2020

Возможно, вы захотите изменить базу данных так, чтобы она была развернута в первую очередь. Таблица с датой, городом и продажами лучше подойдет для добавления городов и, в первую очередь, устранит необходимость в развороте, если предположить, что вы выполняете агрегирование. В противном случае вам нужно будет динамически создать SQL, что далеко от идеала.

...