2014-02-28 5 views
1

I가 다음 쿼리 : 다음과 같은 결과 샘플을 반환SQL 피벗 테이블 구문

SELECT 
    INT_AUX_CONTACT.CONTACT_VISIBILITY_IND, 
    INT_USER.ACCOUNT_NM 

FROM (INT_USER 
INNER JOIN INT_AUX_CONTACT_COLLECTION  ON "INT_USER"."USER_ID"="INT_AUX_CONTACT_COLLECTION".IA_USER_ID) 
INNER JOIN INT_AUX_CONTACT ON INT_AUX_CONTACT_COLLECTION.COLLECTION_ID=INT_AUX_CONTACT.COLLECTION_ID 
WHERE INT_AUX_CONTACT_COLLECTION.COLLECTION_TYP_ID=1 AND INT_AUX_CONTACT.DELETED_IND=0 
and ACTIVE_IND=1 

:

contact_visibility_ind|account_nm 
1      HR05 
2      HR05 
3      HR05 
3      HR05 
2      HR05 
1      CH10 
2      CH10 
3      CH10 
4      CH10 
0      CH10 
2      CH10 

내가처럼 보이는 결과 테이블과 피벗 테이블을 생성하고 싶습니다 :

  0 1 2 3 4 
CH10 0 1 2 2 0 
HR05 1 1 2 1 1 

그러나 피벗 기능을 시도 할 때마다 구문 오류가 발생합니다.

아무도 제안 사항이 있습니까? (미안 테이블에 눈금 선이 없습니다!)

+0

당신의 앨리어싱은 나에게 불필요한 것처럼 보입니다. 내가 놓친 게 있니? – Alexander

+0

앨리어싱이 완전히 중복되면 쿼리를 상속받습니다. 나는 문제를 수정하고 다시 게시 할 것이다. – BenjKenj

답변

0

피벗 테이블의 최종 파생 방식에 대해 100 % 확신하지 못했습니다. 난 당신이 각각의 발생 수를 계산 할 것으로 가정 한 (아마도 CH10HR05 표에 교환해야 하는가?)

SELECT account_nm, [0], [1], [2], [3], [4] 
FROM 
(SELECT * 
FROM 
ResultOfQuery 
) x 
PIVOT 
(
    COUNT(contact_visibility_ind) 
    FOR contact_visibility_ind IN ([0], [1], [2], [3], [4]) 
) y; 

Fiddle here

는 그냥 SELECT * FROM ResultOfQuery 자리에 검색어를 붙여 넣습니다.

+0

완벽한입니다. 태평양 표준시 파생에 대한 귀하의 가정은 옳았습니다. 감사합니다. – BenjKenj