본문 바로가기

DataBase/MSSQL

[MSSQL] ROW 를 컬럼으로 바꾸는 방식 (PIVOT 과 CASE문)

아래와 같은 테이블을 사용자별 SNS 현황을 변환해서 하나의 ROW로 출력해야하는 경우에 사용한다.

Sql Server PIVOT 함수를 사용하거나 CASE 문을 활용해서 사용이 가능하다.

 

두방식 모두 동일한 결과를 출력한다.

MemberSns Table


PIVOT 활용

 

	SELECT name, K AS Kakao , N AS Naver , F AS FaceBook
	FROM (
		SELECT	M.name,
    			M.snsType
		FROM memberSns AS M
	) AS MemberInfo
	PIVOT (
		COUNT(snsType) FOR snsType IN ([K],[N],[F])
	) AS pivot_result

 

출력결과:

PIVOT 출력결과

 


CASE 문 활용

 

	SELECT	name,
    		MAX(Kakao) as Kakao,
            	MAX(Naver) as Naver,
            	MAX(Facebook) as Facebook
	FROM (
    		SELECT	M.name,
            		CASE M.snsType WHEN 'K' THEN 1 ELSE 0 END AS Kakao,
            		CASE M.snsType WHEN 'N' THEN 1 ELSE 0 END AS Naver,
            		CASE M.snsType WHEN 'F' THEN 1 ELSE 0 END AS Facebook
		FROM MemberSns	AS M
	) MemberSns
	GROUP BY name

 

출력결과:

CASE 문 출력결과