我已经设法在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 |
理想情况下,我在每个栏目中的“Sale3”之后所追求的是1545 | 1750 | 1645 | 1695,等等GrpID
每次更改。
答案 0 :(得分:0)
试试这个。在SUM aggregate
GROUP BY grpid,NameID,Descr WITH rollup
,然后使用Where Clause
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