2016-09-23 2 views
1

선택 쿼리를 수행 할 때 일부 데이터를 피벗해야합니다. SQL Server 2014를 사용하고 있습니다. 원본 데이터의 형식은 다음과 같습니다.피벗 데이터 SQL 선택 쿼리 사용

StudentID | DocumentType | PersonID 
    ---------- ------------- -------- 
    00001   DocA   2222 
    00001   DocB   2222 
    00002   DocB   2222 
    00002   DocA   3333 
    00003   DocA   4444 

그리고 내가 같은 표시 할 ...

StudentID | DocumentTypeAPersonID | DocumentTypeBPersonID 
    --------- --------------------- ----------------------- 
    00001    2222      2222 
    00002    3333      2222 
    00003    4444      NULL 

때때로 학생은 모두 문서 유형이있을 것이다. 때때로 그들은 단지 하나를 가질 것입니다. "누락 된"문서 유형이 NULL로 표시되거나 해당 필드에서 공백으로 표시되는지 확실하지 않습니다.

+0

감사를 저장할 수 ... DOCC 후 바로이 작업을 수행 할 수 있습니다. SQL Server 2014입니다. 조회 조회를 실행하기 위해 Microsoft SQL Server Management Studio를 사용하고 있습니다. – bosstone75

+0

'DocA'와'DocB'만이 가능한가요? – CodyMR

+0

죄송합니다 ... 예. DocA와 DocB 만 가능합니다. – bosstone75

답변

2

이 방법은 몇 가지 코드 당신에게

SELECT StudentID, 
     DocumentTypeAPersonID = MAX(CASE WHEN DocumentType ='DocA' THEN PersonID END), 
     DocumentTypeBPersonID = MAX(CASE WHEN DocumentType ='DocB' THEN PersonID END) 
FROM MyTable 
GROUP BY StudentID 
+0

이것은 훌륭하게 작동했습니다! 감사! – bosstone75

0

여기 있습니다.

SELECT StudentID, DocA, DocB FROM 
(
    SELECT StudentID, DocumentType, PersonID 
    FROM myTable 
) t 
pivot 
(
    MAX(PersonID) 
    FOR DocumentType IN (DocA, DocB) 
) p 

이것은 피벗하려는 열을 수동으로 입력해야한다는 정적 피벗입니다. 경우, 예를 들어, 당신은 또한

SELECT StudentID, DocA, DocB, DocC FROM 
(
    SELECT StudentID, DocumentType, PersonID 
    FROM myTable 
) t 
pivot 
(
    MAX(PersonID) 
    FOR DocumentType IN (DocA, DocB, DocC) 
) p