【问题标题】:Dynamic Pivot to sum and group by动态枢轴汇总和分组
【发布时间】:2019-07-09 09:30:04
【问题描述】:

我试图对两列进行动态透视以重新排列一些数据。她是我原来的桌子:

Initial table

我使用流动代码根据 CountryIDGenericArticle 旋转 BRAND,但我得到以下结果(如您所见似乎没有被 GROUPed BY)

Result after pivot

这是我的数据透视代码:

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,期待这样的事情:

Desired result

【问题讨论】:

标签: mysql sql pivot-table


【解决方案1】:

没关系,我最终解决了它,就在我的眼皮底下。问题出在源表选择中:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    相关资源
    最近更新 更多