안녕하세요~ SUM + DECODE 질문 드립니다~ 0 2 1,776

by 뉴초보 [SQL Query] [2014.12.10 09:36:37]


안녕하세요~간만에 질문드립니다~

 

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' <-- 이 '월'이라는걸 직접 코딩하지 않고

 

다른 코드 테이블과 조인하여 연결할수 있을까요?

 

될것도 같은데...버벅이네요 ㅠㅠ

 

답변 부탁드리겠습니다 (--)(__)

by 마농 [2014.12.10 10:27:52]

추상적인 질문이라 구체적인 답변은 어렵네요.
일단 Decode 문에는 상수가 오든, 컬럼이 오든 계산식이 오든, 서브쿼리가 오든...
아무런 상관이 없습니다. 즉, 가능성은 무한하게 열려 있다는 뜻이구요.
그런데. 위와 같이 행을 열로 변환하는 피봇 기능의 경우...
몇가지 제약이 있습니다.
행(Row)은 그 수에 제한이 없죠?
그러나 열(Column)은 고정적인 숫자가 정해져야 하고,
그 값 또한 명확하게 미리 알고 쿼리를 작성해야 한다는 거죠.
값이 고정적으로 정해진 경우라면 미리 알고 쿼리를 작성해야 하며
가변적으로 변할 수 있는 상황이라면? 동적쿼리로 구현하셔야 합니다.
정적쿼리로는 가변적인 열을 적용할 수 없습니다.


by 뉴초보 [2014.12.10 10:36:20]

마농님 덧글 감사드립니다!!

 

맞네요...제가 생각이 짧았네요 ㅠㅠ

 

어차피 컬럼의 수는 정해져 있으니....

 

그냥 컬럼에 맞겠금 코딩하는게 맞겠네요~

 

생각이 짧았습니다 ㅠㅠ

 

덧글 감사드립니다~

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