쿼리질문. 컬럼 두개씩 끊어서 행으로 보여주기.. 1 2 1,801

by 스파르타 [SQL Query] [2023.08.14 13:44:39]


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

WITH t1(code, code_nm, m_seq, x1, x2, x3, x4 , y1, y2, y3, y4) AS

(

SELECT           '001, '01', 5, 1, 2, 3, 4, 5, 6, 7, 8 FROM dual

UNION ALL SELECT '002', '02', 2, 9,  10, 11, 12 ,13, 14, 15, 16 FROM dual

 )

안녕하세요. 잘안풀려서 올려봄니다.

결과는 아래처럼 나오고싶구요.

예를들어  grp1 에 x1, x2   나오고 다음줄 grp2

에 x3, x4 가 나오는 식으로 하고싶습니다. 두개씩 끊어서..   반나절 하구있는데 잘안되네요 ㅠㅠ

code   code_nm   종류   값1    값2    값3    값4

===================================

001     01               grp1    1      2         5        6

001     01               grp2    3      4         7        8

002     02               grp1    9      10       13      14

002     02               grp2    11    12       15      16

.

.

생략....

by 마농 [2023.08.16 00:33:18]
WITH t1(code, code_nm, m_seq, x1, x2, x3, x4 , y1, y2, y3, y4) AS
(
          SELECT '001', '01', 5, 1,  2,  3,  4,  5,  6,  7,  8 FROM dual
UNION ALL SELECT '002', '02', 2, 9, 10, 11, 12 ,13, 14, 15, 16 FROM dual
)
-- 1. 행 복제 후 Decode --
SELECT code
     , code_nm
     , 'grp' || lv gb
     , DECODE(lv, 1, x1, x3) v1
     , DECODE(lv, 1, x2, x4) v2
     , DECODE(lv, 1, y1, y3) v3
     , DECODE(lv, 1, y2, y4) v4
  FROM t1
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 2)
 ORDER BY code, lv
;
WITH t1(code, code_nm, m_seq, x1, x2, x3, x4 , y1, y2, y3, y4) AS
(
          SELECT '001', '01', 5, 1,  2,  3,  4,  5,  6,  7,  8 FROM dual
UNION ALL SELECT '002', '02', 2, 9, 10, 11, 12 ,13, 14, 15, 16 FROM dual
)
-- 2. 다중항목 UNPIVOT --
SELECT *
  FROM t1
 UNPIVOT ((v1, v2, v3, v4) FOR gb IN ( (x1, x2, y1, y2) AS 'grp1'
                                     , (x3, x4, y3, y4) AS 'grp2'
                                     ) )
;

 


by 스파르타 [2023.08.16 09:53:15]

감사합니다^^ 
저번주에 1번  행복제후 디코드 하는방법으로 처리했습니다 

피벗으로 하는게 좋겠네요 ^^  감사합니다^^

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