차트용으로 사용할 데이터 쿼리 질문드립니다. 0 4 732

by 빠바 [SQL Query] [2016.10.31 11:48:22]


안녕하세요.

차트 Data로 활용하기 위한 쿼리를 작성해야하는데요,

원하는 결과는 아래와 같습니다.

TABLE Data
ITEM DATE VALUE
A 2014-11-17 1
A 2014-11-19 2
A 2014-11-20 3
A 2014-11-21 4
B 2014-11-17 4
B 2014-11-18 3
B 2014-11-21 5
C 2014-11-18 2
C 2014-11-19 2
C 2014-11-20 2
C 2014-11-21 2
D 2014-11-19 1
D 2014-11-20 4
D 2014-11-21 3

 

집계 결과
DATE A B C D
2014-11-17 1 4    
2014-11-18   3 2  
2014-11-19 2   2 1
2014-11-20 3   2 4
2014-11-21 4 5 2 3

 

이에 대한 조언좀 부탁드립니다.

감사합니다.

 

답변

 

-- 11G PIVOT --
SELECT *
  FROM t
 PIVOT (MIN(v) FOR item IN ('A' a, 'B' b, 'C' c, 'D' d))
 ORDER BY dt
;
-- 이하 버전에서의 피벗, Group By & Min(Decode --
SELECT dt
     , MIN(DECODE(item, 'A', v)) a
     , MIN(DECODE(item, 'B', v)) b
     , MIN(DECODE(item, 'C', v)) c
     , MIN(DECODE(item, 'D', v)) d
  FROM t
 GROUP BY dt
 ORDER BY dt
;
 
-----------------------------------------------------------------
 
위부분은 이전 질문에 있던 내용과 답변을 가져온것입니다.
 
저는 여기서 궁금한점이 A B C D 부분에서 E가 추가될수도 있고 D 삭제될수도 있을때의 경우입니다.
위에 답변은 DECODE문을 FIX 해놓는 형태 같은데요..
이때 유동적으로 DECODE문을 사용할수있는 방법이있을까요? 아니면 A B C D 를 따로 조회하여 데이터를 불러와서 쓰는방법도 있는지 궁금합니다.
by 도미노 같은 놈 [2016.10.31 12:58:08]

날짜가 순차적으로 있다면 날짜를 컬럼으로 나열하고 item을 group by 하면 나오지 않을까요??

저흰 10g 써서 pivot을 못써가지고 보통 저렇게 하는데...


by 빠바 [2016.10.31 13:27:35]

날짜가 하루하루 추가되는게 문제네요..

추가될때마다 컬럼추가를 해줄수가없지않나요


by 마농 [2016.10.31 13:10:49]

행은 데이터 건수이므로 가변으로 나오지만...

열은 데이터 구조이므로 가변이 안됩니다. 고정입니다.

가변으로 적용하려면 동적 쿼리 이용해야 합니다.


by 빠바 [2016.10.31 13:28:02]

으.. 동적쿼리에 대해 공부좀 해봐야겠네요 항상 좋은 답변 감사드립니다. 많은 도움을 받고있어요

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