동적 pivot 0 6 1,438

by 쥬발자 [SQL Query] [2022.06.08 17:19:13]


캡처.PNG (6,850Bytes)

이런 형식의 결과물을 만들어내야하는데 

질문 데이터를 가로로 나열하고 밑에 질문이 들어가야하고

질문의 개수는 동적입니다. 

어떻게 해야 원하는 형식대로 데이터를 뽑아낼수 있을까요....

by 마농 [2022.06.08 17:33:20]

질문 개수가 동적으로 늘어난다면 쿼리만으로는 안됩니다.
동적쿼리를 이용해야 합니다.
질문하실 때. 결과표만 올리지 마시고 원본도 함께 올려주세요.

WITH t AS
(
SELECT 'a' id, 1 seq, 1 q, 'O' a                FROM dual
UNION ALL SELECT 'a', 1, 2, '36.2'              FROM dual
UNION ALL SELECT 'a', 1, 3, 'A'                 FROM dual
UNION ALL SELECT 'a', 1, 4, '20211001'          FROM dual
UNION ALL SELECT 'a', 2, 1, 'X'                 FROM dual
UNION ALL SELECT 'a', 2, 2, '38'                FROM dual
UNION ALL SELECT 'a', 2, 3, 'A'                 FROM dual
UNION ALL SELECT 'a', 2, 4, '20211005,20211007' FROM dual
UNION ALL SELECT 'b', 1, 1, 'O'                 FROM dual
UNION ALL SELECT 'b', 1, 2, '36.5'              FROM dual
UNION ALL SELECT 'b', 1, 3, 'B'                 FROM dual
UNION ALL SELECT 'b', 1, 4, '20211115'          FROM dual
UNION ALL SELECT 'c', 1, 1, 'O'                 FROM dual
UNION ALL SELECT 'c', 1, 2, '37.8'              FROM dual
UNION ALL SELECT 'c', 1, 3, 'AB'                FROM dual
UNION ALL SELECT 'c', 1, 4, '20211116'          FROM dual
)
SELECT *
  FROM t
 PIVOT (MIN(a) FOR q IN (1, 2, 3, 4))
 ORDER BY id, seq
;

 


by 쥬발자 [2022.06.08 17:46:28]
select *
from ( select 이름코드, 진단결과순서, 질문, 질문답변
         from 진단테이블)
pivot (max(질문답변) for 질문 in (질문1, 질문2, 질문3.....)
)

이런형식입니다 !..

in 안에 들어가는 질문리스트가 담긴 테이블이 따로 있어서 select 해서 골라낼수는 있는데

ex) select 질문 from 질문테이블 where 질문항목순서= '26'  > 26번에 대한 질문을 가져오면 됨 

어떠한방식으로 동적쿼리로 사용해야하는지 감이 안와서요.. 이해가 되시면 좋겠는데 설명하기가 어렵네요... 


by 마농 [2022.06.08 17:51:12]

동적쿼리는 쿼리 영역이 아닙니다. 프로그래밍 영역입니다.
프로그램에서 동적으로 쿼리 문자열을 만들어 내는 것입니다.
1차 쿼리로 항목들을 가져오고
그 항목들을 이용해 쿼리 텍스트 변수에 2차 쿼리 문자열을 완성시키셔야 합니다.
http://gurubee.net/article/19612


by 쥬발자 [2022.06.08 17:53:20]

아.. 그럼 따로 질문리스트가 담긴 테이블에 select 를 돌린후에 가져온 값을 가져와서 서브쿼리로 넣어줘야 한다는 뜻이실까요???


by 마농 [2022.06.08 17:54:59]

서브쿼리로 넣는 것이 아닙니다. (쿼리 영역이 아닙니다.)
텍스트 변수에 문자열로 이어 붙이기 하셔야 합니다.


by 쥬발자 [2022.06.08 17:57:00]

그 부분은 한번도 해본적이 없어서 공부 해봐야겠네요.....

막막했는데 길을 알려주셔서 감사합니다 ㅎ

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