sql-server - 枢轴后的求和列情况 ()

标签 sql-server sql-server-2005 pivot-table

抱歉,如果我解释得不太好,而且标题也不是很清楚。 我正在使用 SQL Server 2005。 我有一个 Pivot 查询工作正常,但我知道我必须添加一个新查询来从季度获取结果。

这是我从月份获取结果的查询

    WITH PivotData AS
(
SELECT  idWatimetro, mes,ano, valor
FROM   E_Registros_Watimetros where ano = 2012
)
SELECT *
FROM PivotData 
PIVOT(SUM(valor) FOR idWatimetro IN ([1],[2],[3],[4],[5] AS P order by mes;

enter image description here

所以,只知道我想要四个寄存器

1 With Month 1+2+3
2 Wint Month 4+5+6
3 With Month 7+8+9
4 Wint Month 10+11+12

enter image description here

我一直在尝试使用 UNION ALL,但没有按我的预期工作,任何帮助将不胜感激,并对我糟糕的英语和解释感到抱歉。

这是我的查询,没有结果

SELECT  * 
FROM    (
            SELECT  idWatimetro, ano,mes, valor
            FROM E_Registros_Watimetros   
            WHERE (ano = 2012 and mes = 1 ) or (ano = 2012 and mes = 2)or (ano = 2012 and mes = 3)
            UNION ALL
            SELECT  idWatimetro, ano,mes, valor
            FROM E_Registros_Watimetros    
            WHERE (ano = 2012 and mes = 4 ) or (ano = 2012 and mes = 5)or (ano = 2012 and mes = 6)
        ) AS SourceTable
PIVOT(SUM(valor) FOR idWatimetro IN ([1],[2],[3],[4],[5]))AS P

谢谢先进。

最佳答案

尝试类似......

   ; WITH PivotData AS
(
SELECT  idWatimetro
      ,CASE WHEN mes IN (1,2,3)    THEN 1
            WHEN mes IN (4,5,6)    THEN 2
            WHEN mes IN (7,8,9)    THEN 3
            WHEN mes IN (10,11,12) THEN 4
       END AS mes
      ,ano
      ,valor
FROM   E_Registros_Watimetros where ano = 2012
)
SELECT *
FROM PivotData 
PIVOT(SUM(valor) 
      FOR Mes 
      IN ([1],[2],[3],[4]))p

关于sql-server - 枢轴后的求和列情况 (),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30087312/

相关文章:

sql - 容纳一对多和一对多(或一对*)关系的最佳实践是什么?

mysql - 如何在 MySQL 中返回数据透视表输出?

mysql - 导入时修改 SQL Server 数据

sql-server - 数据库复制。 2台服务器,主数据库,第二台是只读的

sql - Sql Server 中的交叉联接并不总是返回所有表中的所有行

postgresql - 数据透视表/交叉表 : I wan to return dynamic columns

javascript - 在一定数量之后在新行/列中呈现枢轴属性

sql-server - 在 MS SQL Server 2005 中使用 Rails 2.x

c# - 某些 SQL JOINS 是否会使您的 ASP.NET 应用程序非常慢?

sql-server - 为结果集中的每一行发送电子邮件