Как динамически отключить / развернуть, сохраняя оригинальный порядок моих столбцов?
Я делаю бухгалтерский отчет, выполняя кучу вычислений для таблицы и транспонируя их путем разворачивания / поворота, чтобы он соответствовал формату, который я хочу.
Проблема в том, что когда я разворачиваю столбцы в строки, результирующий вывод автоматически сортирует строки в алфавитном порядке. Я хочу знать, есть ли способ остановить разворотную точку, чтобы сделать это и транспонировать точный порядок столбцов в строках.
Вот мой код для динамического поворота / разворота:
ALTER PROCEDURE dbo.GenerateFormattedFFOReport
AS
BEGIN
SET NOCOUNT ON;
DECLARE @COLSUNPIVOT AS NVARCHAR(MAX),
@QUERY AS NVARCHAR(MAX),
@COLSPIVOT AS NVARCHAR(MAX),
@COLSUNPIVOTORDER AS NVARCHAR(MAX)
SELECT @COLSUNPIVOT = STUFF((SELECT ','+QUOTENAME(C.NAME)
FROM SYS.COLUMNS C WITH(NOLOCK)
WHERE C.OBJECT_ID = OBJECT_ID('GenerateFFOReportData') AND C.NAME <> 'Quarter'
FOR XML PATH('')), 1, 1, '')
SELECT @COLSUNPIVOTORDER = STUFF
SELECT @COLSPIVOT = STUFF((SELECT ',' + QUOTENAME([Quarter])
FROM GenerateFFOReportData T FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')
SELECT @COLSUNPIVOT
SET @QUERY
= 'SELECT HEADER, '+@COLSPIVOT+'
FROM
(
SELECT HEADER,[Quarter],VALUE FROM GenerateFFOReportData
UNPIVOT
(
VALUE FOR HEADER IN ('+@COLSUNPIVOT+')
) UNPIV
) SRC
PIVOT
(
SUM(VALUE)
FOR [Quarter] IN ('+@COLSPIVOT+')
) PIV'
EXEC (@QUERY)
END
GO
Спасибо за любую помощь, которую вы можете оказать.