select sum(q1) sumq1,sum(q2) sumq2,sum(q3) sumq3,sum(q4) sumq4 from (
SELECT P1.*, (P1.Q1 + P1.Q2 + P1.Q3 + P1.Q4) AS YearTotal
FROM (SELECT Year,
             SUM(CASE P.Quarter WHEN 1 THEN P.Amount ELSE 0 END) AS Q1,
             SUM(CASE P.Quarter WHEN 2 THEN P.Amount ELSE 0 END) AS Q2,
             SUM(CASE P.Quarter WHEN 3 THEN P.Amount ELSE 0 END) AS Q3,
             SUM(CASE P.Quarter WHEN 4 THEN P.Amount ELSE 0 END) AS Q4
     FROM Pivot AS P
     GROUP BY P.Year) AS P1) tem
GO

解决方案 »

  1.   

    select sum(q1) sumq1,sum(q2) sumq2,sum(q3) sumq3,sum(q4) sumq4,sum(yearTotal) [sum] from (
    SELECT P1.*, (P1.Q1 + P1.Q2 + P1.Q3 + P1.Q4) AS YearTotal
    FROM (SELECT Year,
                 SUM(CASE P.Quarter WHEN 1 THEN P.Amount ELSE 0 END) AS Q1,
                 SUM(CASE P.Quarter WHEN 2 THEN P.Amount ELSE 0 END) AS Q2,
                 SUM(CASE P.Quarter WHEN 3 THEN P.Amount ELSE 0 END) AS Q3,
                 SUM(CASE P.Quarter WHEN 4 THEN P.Amount ELSE 0 END) AS Q4
         FROM Pivot AS P
         GROUP BY P.Year) AS P1) tem
    GO
      

  2.   

    这不就是列的合计嘛。
    SELECT Year,
                 SUM(CASE P.Quarter WHEN 1 THEN P.Amount ELSE 0 END) AS Q1,
                 SUM(CASE P.Quarter WHEN 2 THEN P.Amount ELSE 0 END) AS Q2,
                 SUM(CASE P.Quarter WHEN 3 THEN P.Amount ELSE 0 END) AS Q3,
                 SUM(CASE P.Quarter WHEN 4 THEN P.Amount ELSE 0 END) AS Q4
         FROM Pivot AS P
      

  3.   

    我觉得用下面一条语句就可以得到行列交叉的效果:
    SELECT  occ_year,
            SUM(CASE quarter WHEN 1 THEN amount ELSE 0 END) AS q1, 
            SUM(CASE quarter WHEN 2 THEN amount ELSE 0 END) AS q2, 
            SUM(CASE quarter WHEN 3 THEN amount ELSE 0 END) AS q3, 
            SUM(CASE quarter WHEN 4 THEN amount ELSE 0 END) AS q4, 
            SUM(amount) AS YearTotal
    FROM    Pivot 
    GROUP BY year WITH cube