2016-10-07 3 views
0

두 개의 열 사용자와 NewUsers 두 개를 분기별로 합산하여 피벗 함수를 사용하므로 아래에 쿼리를 작성했습니다. 코드는PIVOT 내에서 둘 이상의 열을 집계하는 방법

입니다.
select [week],[years],pivoting.[1] as Q1 ,pivoting.[2] AS Q2,pivoting.[3] AS Q3,pivoting.[4] AS Q4,pivoting.[1] as N1,pivoting.[2] AS N2,pivoting.[3] AS N3,pivoting.[4] AS N4 into #addpivot from 
(
    select Week,years,Quarter,users,NewUsers from #pivottable 
) as PivotData 
pivot 
(
    sum(users) for Quarter in ([1],[2],[3],[4]) 
) as pivoting 
pivot 
(
    sum(NewUsers) for Quarter in ([1],[2],[3],[4]) 
) as pivoting 

하지만 두 번째 줄에서 보여주는 오류가 분기 잘못된 열 이름은

것은 내가 잘못려고하지

+1

대체 솔루션입니다. '선택 SUM (분기 = 1 그때 그때 사용자 ELSE 0 끝) AS Q1'... – adrianm

+0

사용하십시오. 더 나은 @adrianm 것입니다 ... – Aditya

+0

@adrianm 만약 당신이 내가 사용하지 말아야 할 것입니다. 혼란스럽게 ........ –

답변

0

내가 뭘 이해가 타격 ....... 저를 도와주세요 것을 이해 할 수 너 여러 값을 의미하는 ... 피벗 내가 제대로 데이터를 읽은 경우

SELECT * 
FROM table 
PIVOT(SUM(NewUsers) FOR Quarter IN ([1],[2],[3],[4])) AS PVTTable 
+0

도움이 될 수 있습니다 ... http://sqlhints.com/2014/03/10/pivot-and-unpivot-in-sql-server/ – Aditya

+0

제 질문을 다시 확인하십시오. 수정했습니다 ... –

0

, 당신은 당신의 데이터를 피벗 해제 및 피봇 값을 식별하는 열을 추가 할 필요가 ...이만큼 간단합니다 선회하기 전에. 나는 이것을 'Category'라고 불렀고 CROSS APPLY를 사용했지만 CASE도 사용할 수 있습니다.

SELECT * INTO #PivotTable FROM (
VALUES 
(1, 1, 1, 10, 12), 
(1, 1, 1, 11, 13), 
(1, 1, 2, 8, 10), 
(1, 1, 2, 7, 11), 
(1, 1, 3, 11, 14), 
(1, 1, 3, 8, 15), 
(1, 1, 4, 15, 10), 
(1, 1, 4, 17, 11) 
)A (Week,Years,Quarter,Users,NewUsers) 


SELECT * FROM 
    (SELECT Week 
     ,Years 
     ,Category 
     ,Value FROM #PivotTable 
     CROSS APPLY 
      (SELECT 'NewUsersQ'+CONVERT(VARCHAR(1),Quarter) Category, NewUsers Value 
      UNION ALL 
      SELECT 'UsersQ'+CONVERT(VARCHAR(1),Quarter) Category, Users Value 
      ) A 
    ) SRC 
PIVOT (
     SUM(Value) FOR Category IN 
     ([UsersQ1], [NewUsersQ1], [UsersQ2], [NewUsersQ2], [UsersQ3], [NewUsersQ3], [UsersQ4], [NewUsersQ4]) 
)Pvt 

Week  Years  UsersQ1  NewUsersQ1 UsersQ2  NewUsersQ2 UsersQ3  NewUsersQ3 UsersQ4  NewUsersQ4 
----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- 
1   1   21   25   15   21   19   29   32   21 
0
SELECT [week] 
     ,[years] 
     ,SUM(CASE WHEN Quarter = 1 THEN users ELSE 0 END) AS Q1 
     ,SUM(CASE WHEN Quarter = 2 THEN users ELSE 0 END) AS Q2 
     ,SUM(CASE WHEN Quarter = 3 THEN users ELSE 0 END) AS Q3 
     ,SUM(CASE WHEN Quarter = 4 THEN users ELSE 0 END) AS Q4 
     ,SUM(CASE WHEN Quarter = 1 THEN NewUsers ELSE 0 END) AS N1 
     ,SUM(CASE WHEN Quarter = 2 THEN NewUsers ELSE 0 END) AS N2 
     ,SUM(CASE WHEN Quarter = 3 THEN NewUsers ELSE 0 END) AS N3 
     ,SUM(CASE WHEN Quarter = 4 THEN NewUsers ELSE 0 END) AS N4 
FROM #pivottable 
GROUP BY [week] 
     ,[years] 
관련 문제