반응형
아래와 같은 테이블을 사용자별 SNS 현황을 변환해서 하나의 ROW로 출력해야하는 경우에 사용한다.
Sql Server PIVOT 함수를 사용하거나 CASE 문을 활용해서 사용이 가능하다.
두방식 모두 동일한 결과를 출력한다.
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
출력결과:
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
출력결과:
728x90
반응형
'DataBase > MSSQL' 카테고리의 다른 글
[MSSQL] 일별통계 데이터 작성시 spt_values 활용 (0) | 2022.03.15 |
---|---|
[MSSQL] SP 문자열이나 이진데이터가 잘립니다. (0) | 2021.11.25 |
[MSSQL] 두테이블간 교집합(INTERSECT) 차집합(EXCEPT) 찾기 (0) | 2021.11.22 |
[MSSQL]MSSQL 날짜 변환표(GETDATE, CONVERT) (0) | 2021.11.09 |
[MSSQL] SQL Server 에이전트로 API 호출 (0) | 2021.03.13 |