动态枢轴求和和分组依据

问题描述 投票:0回答:1

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

Initial table

我使用流动代码基于 CountryIDGenericArticle 来旋转 BRAND,但我得到以下结果(如您所见,表格似乎没有按分组)

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个回答
0
投票

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

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
© www.soinside.com 2019 - 2024. All rights reserved.