Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 枢轴后的和柱箱()_Sql Server_Sql Server 2005_Pivot Table - Fatal编程技术网

Sql server 枢轴后的和柱箱()

Sql server 枢轴后的和柱箱(),sql-server,sql-server-2005,pivot-table,Sql Server,Sql Server 2005,Pivot Table,对不起,如果我解释得不好,标题也不太清楚。 我正在使用SQLServer2005。 我有一个使用Pivot的查询,它工作得很好,但我知道我必须添加一个新的查询,该查询可以从中获得结果 这是我的查询,以获得每月的结果 WITH PivotData AS ( SELECT idWatimetro, mes,ano, valor FROM E_Registros_Watimetros where ano = 2012 ) SELECT * FROM PivotData PIVOT(SU

对不起,如果我解释得不好,标题也不太清楚。 我正在使用SQLServer2005。 我有一个使用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;

所以,我只想得到四个注册表

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

我一直在尝试与工会,但没有像我预期的那样工作,任何帮助将不胜感激,并为我糟糕的英语和解释抱歉

这是我的查询,没有结果

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

您可以在
透视图的结果集中
按季度号分组,即
mes-(mes-1)%3

WITH PivotData AS
(
   SELECT  idWatimetro, mes,ano, valor
   FROM   E_Registros_Watimetros where ano = 2012
),
PivotResult AS 
(
   SELECT *
   FROM PivotData 
   PIVOT(SUM(valor) FOR idWatimetro IN ([1],[2],[3],[4],[5])) AS P 
),
SELECT CASE mes - (mes - 1) % 3 
         WHEN 1 THEN '1st' 
         WHEN 4 THEN '2nd' 
         WHEN 7 THEN '3rd' 
         ELSE '4th' 
       END AS quarter,
       2012 AS ano, sum([1]) AS [1], sum([2]) AS [2], 
       sum([3]) AS [3], sum([4]) AS [4], sum([5]) AS [5]
FROM PivotResult
GROUP BY mes - (mes - 1) % 3