2014-12-28 1 views
2

다음 피벗 쿼리를 사용하면 잘 작동합니다.SUM (값) 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; 
enter image description here

하지만 지금은 내가 매월 또는 몇 일 또는 몇 주 또는 연도에 대한 합계 (용기)를 얻을 수 있어야하지만 미안 성공없이 노력하고, 어떤 도움이 좋을 것

감사합니다.

피터 게르 켄스 (Pieter Geerkens)의 제안을 받고 나서 내가하고 싶은 일은 매월 합계 (1), 합계 (2), 합계 (3) ... 합계 (10)입니다. 이 매개 변수는 년, 일 또는 주일 수 있기 때문에 한 달을 예로들 수 있습니다. 매우 명확하지 않으려 고 죄송합니다. 제 영어 실력이 좋지 않습니다.

enter image description here

+0

원하는 출력이 어떻게 나타날 것으로 예상합니까? 이것 없이는, 당신이 찾고있는 것을 무작위 추측하는 모든 시도가 도움이됩니다. 또한 계층 적 결과 세트 인 것처럼 단일 쿼리로 실제로 원하는 것을 만들 수 있는지 여부는 확실하지 않습니다. –

답변

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 
+0

완벽하게 작동합니다. – yaqui

+0

@yaqui - 도움이 되니 기쁩니다. –

1

당신은 피벗을 할 두 번째 CTE를 추가하고 최종 SELECTGROUP 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 서버 2008 상자에서 작동합니다.

+0

그걸 시도하지만 모든 열에 대해 다음과 같은 오류가 표시됩니다 "msg 207, Level 16, State 1, Line 14 잘못된 열 이름 '1'... '10' – yaqui

+0

열 이름에 별칭을 지정할 수 있습니다. 'tempData'에 CTE :'SELECT [1] AS KW1, [2] AS KW2, ...' –

+0

제발, 어떤 오류라도 보지 마라. 그러나 일하지 마라. 코드. – yaqui