2014-02-27 9 views
0

[account name], Q1, Q2 .... QN 형식의 Accounts 테이블을 각 계정에 대한 수익 세부 사항이 있습니다. 조바꿈을 [Quarter ][account1][account2]으로 바꿔야합니다.피벗 피벗 피벗

내 검색어는 다음과 같습니다.

Select [Quarters], [account 1], [ account2] 
from 
( 
    Select * 
    from Accounts 
    unpivot 
    (Value for [Quarters] in (Q1,Q2,Q3,Q4,.....) 
) unpiv 
) as src 
Pivot 
(
    sum(value) for [Account name] in ([account1],[account2]) 
) piv 

그러나이 쿼리는 NULL을 반환합니다.

계정 테이블

[Account name] [Q1] [Q2] [Q3] 
    Apple  20 30 40 
    Google  30 10 15 
    IBM   34 23 12 

원하는 출력

[Quarters] [Apple][Google][IBM] 
    Q1  20  30  34 
    Q2  30  10  23 
    Q3  40  15  12 

답변

0

당신은 당신의 결과를 반환 할 UNPIVOT과 PIVOT 기능을 모두 사용할 수 있습니다. nulls를 반환하는 이유를 모르겠지만 하위 쿼리에 너무 많은 열을 포함시킬 수 있습니다. 당신이 사용할 수 있어야 결과를 얻으려면 :

select quarters, Apple, Google, IBM 
from 
(
    select accountname, quarters, value 
    from accounts 
    unpivot 
    (
    value 
    for quarters in (Q1, Q2, Q3) 
) u 
) d 
pivot 
(
    sum(value) 
    for accountname in (Apple, Google, IBM) 
) p; 

는 참조 SQL Fiddle with Demo