mssql 낮은버전 unpivot기능이 없을때 (열을 행으로) 0 2 1,905

by 잔든건 [SQLServer] 열을행으로 mssql2005 unpivot [2018.01.15 18:07:00]


col1 A1 A2 A3
test1 10 20 30
test2 15 25 35

 

col1 A value
test1 A1 10
test1 A2 20
test1 A3 30
test2 A1 15
test2 A2 25
test2 A3 35

 

첫번째 테이블을 아래 두번째 테이블의 결과처럼 반환이 가능할까요?

열을 행으로 바꾸는 쿼리를 검색해보니 unpivot이 나오는데 mssql버전이 낮아서 지원이 되질 않습니다.

다른 방법이 없는건가요? ㅜㅜ..

 

by 마농 [2018.01.15 18:42:28]
WITH t AS
(
SELECT 'test1' col1, 10 a1, 20 a2, 30 a3
UNION ALL SELECT 'test2', 15, 25, 35 
)
SELECT col1
     , 'A' + CAST(lv AS VARCHAR) a
     , CASE lv WHEN 1 THEN a1
               WHEN 2 THEN a2
               WHEN 3 THEN a3
        END value
  FROM t a
 CROSS JOIN (SELECT 1 lv
             UNION ALL SELECT 2
             UNION ALL SELECT 3
             ) b
;

 


by 잔든건 [2018.01.16 09:25:31]

정말 원하던 답변입니다. 감사합니다!!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입