한개 이상의 데이터-가로를 세로로 0 1 4,154

by 비연 [MySQL] mysql 정렬 가로 세로 [2019.02.14 09:01:07]


안녕하세요. 

앞전에 마농님께서 알려주신데로 작업하다 보니 하나의 데이터를 가지고 세로로 푸는 방법은 알수 있었습니다. 

그런데 가령 아래와 같은 구성일 경우에는 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

;

 

 

by 마농 [2019.02.14 09:22:16]
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
;

 

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