동일한 테이블에서 여러 열의 피벗을 해제하는 방법

블로그

동일한 테이블에서 여러 열의 피벗을 해제하는 방법

아래 구조의 테이블이 있습니다. PARAMETER당 ID당 하나의 행을 얻고 해당 RATINGS에 해당하도록 출력의 피벗을 해제해야 합니다.



create table RATINGS(ID INT,PARAMETER1 INT,PARAMETER2 INT,PARAMETER3 INT,PARAMETER4 INT) insert into RATINGS values(1000,1,3,2,1) insert into RATINGS values(1002,2,3,3,2) insert into RATINGS values(1007,3,3,2,1) insert into RATINGS values(1015,1,3,1,3) insert into RATINGS values(1019,3,2,1,1) 

예상 출력:






ID PARAMETERS RATING 1000 PARAMETER1 1 1000 PARAMETER2 3 1000 PARAMETER3 2 1000 PARAMETER4 1 1002 PARAMETER1 2 1002 PARAMETER2 3 1002 PARAMETER3 3 1002 PARAMETER4 2 1007 PARAMETER1 3 1007 PARAMETER2 3 1007 PARAMETER3 2 1007 PARAMETER4 1 1015 PARAMETER1 1 1015 PARAMETER2 3 1015 PARAMETER3 1 1015 PARAMETER4 3 1019 PARAMETER1 3 1019 PARAMETER1 2 1019 PARAMETER1 1 1019 PARAMETER1 1 

나중에 등급이 1과 2인 행만 가져오도록 필터링해야 합니다. 따라서 출력은 다음과 같아야 합니다.



ID PARAMETERS RATING 1000 PARAMETER1 1 1000 PARAMETER3 2 1000 PARAMETER4 1 1002 PARAMETER1 2 1002 PARAMETER4 2 1007 PARAMETER3 2 1007 PARAMETER4 1 1015 PARAMETER1 1 1015 PARAMETER3 1 1019 PARAMETER1 2 1019 PARAMETER1 1 1019 PARAMETER1 1 

아래 쿼리를 사용하여 처음 두 개의 ID와 PARAMETERS 열을 가져올 수 있습니다.



select ID,[parameters] from RATINGS unpivot ( [value] for [PARAMETERS] in (PARAMETER1,PARAMETER2,PARAMETER3,PARAMETER4) ) unpvt 

산출:






**ID** **PARAMETERS** 1000 PARAMETER1 1000 PARAMETER2 1000 PARAMETER3 1000 PARAMETER4 1002 PARAMETER1 1002 PARAMETER2 1002 PARAMETER3 1002 PARAMETER4 1007 PARAMETER1 1007 PARAMETER2 1007 PARAMETER3 1007 PARAMETER4 1015 PARAMETER1 1015 PARAMETER2 1015 PARAMETER3 1015 PARAMETER4 1019 PARAMETER1 1019 PARAMETER2 1019 PARAMETER3 1019 PARAMETER4 

누군가 RATING 열을 얻는 방법을 알려주세요.

#sql #sql-서버