안녕하세요.
차트 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 를 따로 조회하여 데이터를 불러와서 쓰는방법도 있는지 궁금합니다.