안녕하세요~간만에 질문드립니다~
SUM + DECODE 구문에 대해서 궁금한 점이 있는데요~
데이터의 월 합계를 구할때 많이 사용하는걸로 알고 있습니다.
SUM(DECODE(MM,'01',PRICE,0) AS MM1_PRICE ,
SUM(DECODE(MM,'02',PRICE,0) AS MM2_PRICE ,
SUM(DECODE(MM,'03',PRICE,0) AS MM3_PRICE ,
SUM(DECODE(MM,'04',PRICE,0) AS MM4_PRICE ,
SUM(DECODE(MM,'05',PRICE,0) AS MM5_PRICE ,
...
예로 이러한 형태라면
중간에 '01', '02', '03' <-- 이 '월'이라는걸 직접 코딩하지 않고
다른 코드 테이블과 조인하여 연결할수 있을까요?
될것도 같은데...버벅이네요 ㅠㅠ
답변 부탁드리겠습니다 (--)(__)
추상적인 질문이라 구체적인 답변은 어렵네요.
일단 Decode 문에는 상수가 오든, 컬럼이 오든 계산식이 오든, 서브쿼리가 오든...
아무런 상관이 없습니다. 즉, 가능성은 무한하게 열려 있다는 뜻이구요.
그런데. 위와 같이 행을 열로 변환하는 피봇 기능의 경우...
몇가지 제약이 있습니다.
행(Row)은 그 수에 제한이 없죠?
그러나 열(Column)은 고정적인 숫자가 정해져야 하고,
그 값 또한 명확하게 미리 알고 쿼리를 작성해야 한다는 거죠.
값이 고정적으로 정해진 경우라면 미리 알고 쿼리를 작성해야 하며
가변적으로 변할 수 있는 상황이라면? 동적쿼리로 구현하셔야 합니다.
정적쿼리로는 가변적인 열을 적용할 수 없습니다.