2014-07-08 5 views
0

는이 같은 테이블이 있습니다피벗을 해제 할 수 있습니까?

ForeignKeyA, ForeignKeyB, Before1, After1, Before2, After2 ... 전 (N) (N) 후 내가 만들 수 있어야합니다

이런 일에이 테이블을 unpivots 뷰 :

ForeignKeyA, ForeignKeyB, 년, 전, 올해는 열 후 /를 이전의 반복이다

후.

편집 : 이제이 시점에 이르렀지만 올해를 자체 열로 분리하는 방법을 모르겠습니다.

SELECT [f_lForiegnKey], [f_lAnalysisVariableKey], dBefore, dAfter, szBefore,  szAfter 
    FROM 
    (SELECT [f_lForiegnKey], [f_lAnalysisVariableKey], [dBefore01], [dAfter01], [szBefore01], [szAfter01], 
    [dBefore02], [dAfter02],[szBefore02], [szAfter02], 
    [dBefore03], [dAfter03],[szBefore03], [szAfter03], 
    [dBefore04], [dAfter04],[szBefore04], [szAfter04], 
    [dBefore05], [dAfter05],[szBefore05], [szAfter05] 

    FROM [dbo].[A_STRATS_V]) p 
    UNPIVOT 
    (dBefore FOR dBeforex IN ([dBefore01], [dBefore02], [dBefore03], [dBefore04],  [dBefore05])) AS U1 

    UNPIVOT 
    (dAfter FOR dAfterx IN ([dAfter01], [dAfter02], [dAfter03], [dAfter04], [dAfter05])) AS U2 

    UNPIVOT 
    (szBefore FOR szBeforex IN ([szBefore01], [szBefore02], [szBefore03], [szBefore04], [szBefore05])) AS U3 

    UNPIVOT 
    (szAfter FOR szAfterx IN ([szAfter01], [szAfter02], [szAfter03], [szAfter04], [szAfter05])) AS U4 

    WHERE RIGHT(dBeforex, 1) = RIGHT(dAfterx, 1) 

    AND RIGHT(dBeforex, 1) = RIGHT(szBeforex, 1) 

    AND RIGHT(dBeforex, 1) = RIGHT(szAfterx, 1); 
    GO 

나는 각 세트 오프 수를 절단하고 자신의 칼럼에 넣어해야합니다. 이것이 가능한가?

감사합니다.

+0

'A_STRATS_V'이 (가) 실제로보기라는 몰래 의심을하는 이유는 무엇입니까? 무슨 RDBMS? 샘플 시작 데이터와 원하는 결과를 여기에서 얻을 수 있습니까? 특히'year'를 어떻게 얻을지 확신하지 못하기 때문에 ... –

+0

V는 변수를 나타냅니다. SQL Management Studio의 테이블이지만 Oracle로 변환 할 수 있어야합니다. 나는 올해를 어떻게 얻는 지 잘 모르겠습니다. 실제로 열 이름의 끝에서 숫자를 가져 와서 각 반복마다 연도 필드에 넣음으로써 실제로 작동시킬 수 있었지만 나중에 가능하지 않거나 실용적이지 않다고 들었습니다. – enO87

+0

샘플 시작 데이터 및 원하는 결과를 기다리는 중입니다. –

답변

관련 문제