안녕하세요.
앞전에 마농님께서 알려주신데로 작업하다 보니 하나의 데이터를 가지고 세로로 푸는 방법은 알수 있었습니다.
그런데 가령 아래와 같은 구성일 경우에는 copy_t 케이스를 어떻게 처리해야 하는지 궁금합니다.
아래에 하나의 데이터컬럼을 세로로 표현하는 쿼리는 추가해 놓았는데, 한개 이상일 경우엔 어떻게 처리해야 하는지 도움 부탁드립니다.
메인NO | 메인NO_CODE | 서브NO1 | 서브NO1_CODE | 서브NO2 | 서브NO2_CODE | 서브NO3 | 서브NO3_CODE | 기타 |
AAAAA | 100-100 | AAAA1 | 110-110 | AAAA2 | 120-120 | AAAA3 | 130-130 | A |
:
이런식으로 데이터들이 들어가 있는 테이블이 있습니다. BBBBB, CCCCC 등으로
이걸 아래와 같은 방법으로 볼수 있는지 문의드립니다.
AAAAA | 100-100 | A |
AAAA1 | 110-110 | A |
AAAA2 | 120-120 | A |
AAAA3 | 130-130 | A |
도움 부탁드립니다.
-- 하나일 경우 쿼리
WITH data_t AS
(
SELECT 'AAAAA' 메인NO, 'AAAA1' 서브NO1, 'AAAA2' 서브NO2, 'AAAA3' 서브NO3, 'A' 기타
UNION ALL SELECT 'BBBBB', 'BBBB1', 'BBBB2', 'BBBB3', 'B'
)
, copy_t AS
(
SELECT 1 lv
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
)
SELECT CASE lv
WHEN 1 THEN 메인NO
WHEN 2 THEN 서브NO1
WHEN 3 THEN 서브NO2
WHEN 4 THEN 서브NO3
END no
, 기타
FROM data_t a
, copy_t b
WHERE lv <= 4
ORDER BY 기타, lv
;
WITH data_t AS ( SELECT 'AAAAA' 메인no, '100-100' 메인no_code, 'AAAA1' 서브no1, '110-110' 서브no1_code , 'AAAA2' 서브no2, '120-120' 서브no2_code, 'AAAA3' 서브no3, '130-130' 서브no3_code, 'A' 기타 UNION ALL SELECT 'BBBBB', '100-100', 'BBBB1', '110-110', 'BBBB2', '120-120', 'BBBB3', '130-130', 'B' ) , copy_t AS ( SELECT 1 lv UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 ) SELECT CASE lv WHEN 1 THEN 메인no WHEN 2 THEN 서브no1 WHEN 3 THEN 서브no2 WHEN 4 THEN 서브no3 END no , CASE lv WHEN 1 THEN 메인no_code WHEN 2 THEN 서브no1_code WHEN 3 THEN 서브no2_code WHEN 4 THEN 서브no3_code END code , 기타 FROM data_t a , copy_t b WHERE lv <= 4 ORDER BY 기타, lv ;