Я настраиваю динамический круг, где столбцы (идентификаторы отделов) должны быть в установленном порядке, а любые новые значения, которые будут создавать столбец, должны находиться в конце таблицы.Я установил порядковый номер для «известных» отделов, и любые новые отделы получают следующий номер в последовательности.Мне нужно, чтобы идентификаторы отделов были заголовками, но они мне нужны в порядке порядкового номера.
1) Я развернул номер последовательности:
FROM (SELECT DISTINCT [SEQ] FROM #TABLE) AS [SEQ]
ORDER BY [SEQ]
SET @DynamicPivotQuery =
N'SELECT [DATE], ' + @ColumnName + '
FROM #TABLE
PIVOT(SUM([COUNT])
FOR [SEQ] IN (' + @ColumnName + ')) AS PVTTable
ORDER BY [DATE]'
--Execute the Dynamic Pivot Query
EXEC sp_executesql @DynamicPivotQuery
Это выходит вправильный порядок, но порядковый номер - это заголовок столбца
2) Я также повернулся на отделе, но столбцы в последовательности с идентификатором отдела:
--Get distinct values of the PIVOT Column
SELECT @ColumnName= ISNULL(@ColumnName + ',','')
+ QUOTENAME([DEPT_ID])
FROM (SELECT DISTINCT [DEPT_ID] FROM #TABLE) AS [DEPT_ID]
ORDER BY [DEPT_ID]
SET @DynamicPivotQuery =
N'SELECT [DATE], ' + @ColumnName + '
FROM #TABLE
PIVOT(SUM([COUNT])
FOR [DEPT_ID] IN (' + @ColumnName + ')) AS PVTTable
ORDER BY [DATE]'
--Execute the Dynamic Pivot Query
EXEC sp_executesql @DynamicPivotQuery
Данные /таблица, которая готова к повороту:
SEQ DEPT DATE COUNT
----------------------------------
1 8 1/1/2019 5 (Dept 8 is known Dept)
1 8 1/2/2019 7
2 3 1/1/2019 6 (Dept 3 is known Dept)
2 3 1/2/2019 4
3 1 1/1/2019 7 (Dept 1 is an unknown dept)
3 1 1/2/2019 3
Результаты, которые я хочу увидеть:
DATE 8 3 1
----------------------------------
1/1/2019 5 6 7
1/2/2019 7 4 3
Или как изображение:
![enter image description here](https://i.stack.imgur.com/U5ftz.png)