Динамический круг для суммирования и группировки по - PullRequest
0 голосов
/ 09 июля 2019

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

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

Я использовал текущий код для поворота BRAND на основе CountryID и GenericArticle но я получаю следующий результат (как вы можете видеть, что таблица не выглядит как GROUPed BY)

Результат после разворота

Вот мой сводный код:

DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
 

SELECT @ColumnName= ISNULL(@ColumnName + ',','') 
       + QUOTENAME(Brand)
FROM (SELECT DISTINCT [Brand]
	  FROM #tempProgCov) AS Country


SET @DynamicPivotQuery = 
  N'SELECT [CountryID], [GenericArticle], ' + @ColumnName + '
INTO ##ProgCovPivot
FROM #tempProgCov as Src
PIVOT
 (
	SUM([Coverage])
	FOR [Brand] IN (' + @ColumnName + ')
 ) as Pvt'

EXEC sp_executesql @DynamicPivotQuery

Любая помощь высоко ценится, спасибо!

PS, ожидал что-то вроде этого:

Желаемый результат

1 Ответ

0 голосов
/ 09 июля 2019

Неважно, я решил это в конце концов, был просто под моим взглядом.Проблема была в исходной таблице выберите:

DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
 

SELECT @ColumnName= ISNULL(@ColumnName + ',','') 
       + QUOTENAME(Brand)
FROM (SELECT DISTINCT [Brand]
	  FROM #tempProgCov) AS Country



SET @DynamicPivotQuery = 
  N'SELECT [CountryID], [GenericArticle], ' + @ColumnName + '
INTO ##ProgCovPivot
FROM (SELECT CountryID,
			 Brand,
			 GenericArticle,
			 Coverage
	  FROM #tempProgCov) as Src
PIVOT
 (
	SUM([Coverage])
	FOR [Brand] IN (' + @ColumnName + ')
 ) as Pvt'


EXEC sp_executesql @DynamicPivotQuery
...