我对Pivot有以下查询,效果很好。
WITH PivotData AS
(
SELECT fechaHora, idWatimetro, semana, hora, minuto,dia,mes ,ano,valor
FROM E_Registros_Watimetros
)
SELECT *
FROM PivotData
PIVOT(SUM(valor) FOR idWatimetro IN (
[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]
) ) AS P
order by fechaHora, semana,dia,mes;
但是现在,我必须能够每个月或几天或几周或一年获得Sum(勇气),但是我没有成功,任何帮助都会很好
感谢您的时间。
在提出Pieter Geerkens之后,我想做的就是这样 每个月的Sum(1),Sum(2),Sum(3)... Sum(10)。 月份是一个例子,因为这个参数可以是年,日或周 很抱歉不太清楚,我的英语不是很好。
答案 0 :(得分:1)
您可以添加第二个CTE来执行数据透视,并使用最终SELECT
到GROUP BY
:
WITH PivotData AS
(
SELECT fechaHora, idWatimetro, semana, hora, minuto,dia,mes ,ano,valor
FROM E_Registros_Watimetros where ano = 2012
), tempData AS (
SELECT *
FROM PivotData
PIVOT(SUM(valor) FOR idWatimetro IN ([1],[2],[3],[4],[5]) ) AS P
)
SELECT MONTH(fechaHora) AS [Month],
SUM([1]) AS KW1,
SUM([2]) AS KW2,
SUM([3]) AS KW3
FROM tempData
GROUP BY MONTH(fechaHora)
编辑:上述查询适用于我的SQL Server 2008框。
答案 1 :(得分:1)
您可以对查询执行此操作,但需要通过删除最终结果中不需要的列来更改数据透视源查询。试试这个。
WITH PivotData
AS (SELECT idWatimetro,
mes,
ano,
valor
FROM E_Registros_Watimetros)
SELECT *
FROM PivotData
PIVOT(Sum(valor)
FOR idWatimetro IN ( [1],
[2],
[3],
[4],
[5],
[6],
[7],
[8],
[9],
[10] ) ) AS P