[SQL] 어떻게 거래 / SQL에서 피벗 테이블을 만드는 방법?
SQL어떻게 거래 / SQL에서 피벗 테이블을 만드는 방법?
내 소스 데이터 테이블은
MemID Condition_ID Condtion_Result
----------------------------------
1 C1 0
1 C2 0
1 C3 0
1 C4 1
2 C1 0
2 C2 0
2 C3 0
2 C4 0
내가 만들려는 예상보기는 ....입니다
MemID C1 C2 C3 C4
------------------
1 1 0 0 1
2 0 0 0 1
여기에 다른 조건이다. 상기 소스에 나타난 예에서, 주어진 MemID 만 4 행. 이 숫자는 실제 상황에서 달라질 수 있습니다. 내 피벗 테이블 (또는 다른 솔루션은) 그것을 조건 결과의 수를 선택하고 열로 표시되어야합니다. 그것을 어떻게?
해결법
-
==============================
1.당신은 PIVOT를 사용해야합니다. 당신이 열은 실행 시간까지 알 수없는 변환 할 수있는 컬럼의 값 또는 동적 PIVOT을 알고 어디 정적 PIVOT을 사용할 수 있습니다.
당신은 PIVOT를 사용해야합니다. 당신이 열은 실행 시간까지 알 수없는 변환 할 수있는 컬럼의 값 또는 동적 PIVOT을 알고 어디 정적 PIVOT을 사용할 수 있습니다.
정적 피벗 (데모와 참조 SQL 바이올린) :
select * from ( select memid, Condition_id, Condition_Result from t ) x pivot ( sum(condition_result) for condition_id in ([C1], [C2], [C3], [C4]) ) p
동적 피벗 (데모와 참조 SQL 바이올린) :
DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.condition_id) FROM t c FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = 'SELECT memid, ' + @cols + ' from ( select MemId, Condition_id, condition_result from t ) x pivot ( sum(condition_result) for condition_id in (' + @cols + ') ) p ' execute(@query)
둘 다 동일한 결과를 생성합니다.
from https://stackoverflow.com/questions/11617713/how-to-create-a-pivottable-in-transact-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 다른 컬럼의 MySQL의 그룹에 의해 합계 총 가치 (0) | 2020.04.22 |
---|---|
[SQL] FRM과 IBD 파일에서 테이블 구조를 복원 (0) | 2020.04.22 |
[SQL] 오라클 (? 오래) 조인 - 변환을위한 도구 / 스크립트를? (0) | 2020.04.22 |
[SQL] 화합물 키 행 그룹당 시리얼 번호 (0) | 2020.04.21 |
[SQL] MySQL은 : 어떻게 특정 값을 갖는 그룹을 선택하려면? (0) | 2020.04.21 |