2016-05-19 77 views
-1

更新樞軸2項措施的SQL Server

我需要做AGG_A的最大值,而不是通過轉動它。

如果我把它作爲一個維度,如當前代碼所示,它會產生意想不到的結果(隨機行數),因爲它實際上是一個度量。

目前代碼

Declare @Query_ nvarchar(MAX) 
Declare @Cols_For_Pivot_ nvarchar(MAX) 

--Get unique list of metrics in Var_Col for pivot. 
SELECT @Cols_For_Pivot_= COALESCE(@Cols_For_Pivot_ + ',','') + QUOTENAME(COL_D) 
FROM (SELECT DISTINCT COL_D FROM dbo.my_table) AS PivotTable 



SET @Query_ = 
    N'SELECT COL_A 
      ,COL_B 
      ,COL_C 
      ,AGG_A 
      , ' + @Cols_For_Pivot_ + ' 
    FROM dbo.min_by_min_static_results 
    PIVOT(SUM(AGG_B) 
      FOR COL_D IN (' + @Cols_For_Pivot_ + ')) AS P' 


--Execute dynamic query 
EXEC sp_executesql @Query_ 

所需的結果

SET @Query_ = 
    N'SELECT COL_A 
      ,COL_B 
      ,COL_C 
      ,MAX(AGG_A) 
      , ' + @Cols_For_Pivot_ + ' 
    FROM dbo.min_by_min_static_results 
    PIVOT(SUM(AGG_B), 
      FOR COL_D IN (' + @Cols_For_Pivot_ + ')) AS P' 
+0

的可能的複製[SQL Server的透視表具有多個列的聚集體(http://stackoverflow.com/questions/14694691/sql-server-pivot-table-with-multiple-column-aggregates) –

回答

0

明白了,我只需要過的分區。

SET @Query_ = 
    N'SELECT COL_A 
      ,COL_B 
      ,COL_C 
      ,MAX(AGG_A) OVER(PARTITION BY 
            COL_A 
            ,COL_B 
            ,COL_C 
            , ' + @Cols_For_Pivot_ + ') AS AGG_A 
      , ' + @Cols_For_Pivot_ + ' 
    FROM dbo.min_by_min_static_results 
    PIVOT(SUM(AGG_B), 
      FOR COL_D IN (' + @Cols_For_Pivot_ + ')) AS P'