Как динамически отключить / развернуть, сохраняя оригинальный порядок моих столбцов?

Я делаю бухгалтерский отчет, выполняя кучу вычислений для таблицы и транспонируя их путем разворачивания / поворота, чтобы он соответствовал формату, который я хочу.

Проблема в том, что когда я разворачиваю столбцы в строки, результирующий вывод автоматически сортирует строки в алфавитном порядке. Я хочу знать, есть ли способ остановить разворотную точку, чтобы сделать это и транспонировать точный порядок столбцов в строках.

Вот мой код для динамического поворота / разворота:

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  

Спасибо за любую помощь, которую вы можете оказать.

0 ответов

Другие вопросы по тегам