【问题标题】:Grouping in a SQL Pivot在 SQL Pivot 中分组
【发布时间】:2015-01-25 02:38:56
【问题描述】:

我已经设法在 MS SQL 中创建了一个数据透视表,并且我想通过汇总的 GrpID 对年度列进行分组。我很明白有一个汇总条款应该遵守,但我无法理解。

SELECT * 

FROM(

    SELECT Descr, NameID, grpid,YE,total from appendicesgrouping
) as t

PIVOT (sum(total) 
       for ye in (
                  [2010],[2011],[2012],[2013],[2014]
                  )
       ) as PVT 

WHERE grpid < 7 
    AND practiceiD = 2 

ORDER BY nameid asc, grpid asc, descr asc

这给出了以下回报:

Descr|NameID|GrpID|2010|2011|2012|2013|2014|

Sale1|1     |1    |1000|1100|900 |1050|1125|

Sale2|1     |1    |500 |600 |650 |550 |525 |

Sale3|1     |1    |45  |50  |50  |45  |45  | 

Cost1|1     |2    |10  |10  |10  |10  |10  | 

Cost2|1     |2    |5   |5   |5   |5   |5   | 

Cost10|1     |3    |10  |10  |10  |10  |10  | 

Cost11|1     |3    |5   |5   |5   |5   |5   |

理想情况下,对于GrpID 的每次更改,我在每列中的“Sale3”下将是 1545|1750|1645|1695 等等。

【问题讨论】:

    标签: sql-server group-by pivot rollup


    【解决方案1】:

    试试这个。在选择中使用SUM aggregate 并在Where Clause 之后添加GROUP BY grpid,NameID,Descr WITH rollup

    SELECT Descr,
           NameID,
           grpid,
           Sum([2010])[2010],
           Sum([2011])[2011],
           Sum([2012])[2012],
           Sum([2013])[2013],
           Sum([2014])[2014]
    FROM  (SELECT Descr,
                  NameID,
                  grpid,
                  YE,
                  total
           FROM   appendicesgrouping) AS t
          PIVOT (Sum(total)
                FOR ye IN ([2010],[2011],[2012],[2013],[2014])) AS PVT
    WHERE  grpid < 7
           AND practiceiD = 2
    GROUP  BY grpid,
              NameID,
              Descr WITH rollup
    ORDER  BY nameid ASC,
              grpid ASC,
              descr ASC 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2021-11-23
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多