안녕하세요. 몇번 로그인 하면서 강의 눈팅정도만 해오다가, 직접 처음으로 글을 남기네요.
많은것을 배우고 있습니다.
제가 드릴 질문은 아래의 첫번째 표에서 두번째 표로 데이터를 바꿔서 뽑아오고 싶습니다.
현재 첫번째 표는 1차적으로 DECODE처리를 하여 data필드와 count로 나누어 둔 결과입니다.
field | year | section | data | count |
CPL | 2007 | 2개월보장긴급 | 4 | 5 |
CPL | 2007 | 2개월보장긴급 | 6 | 2 |
CPL | 2007 | 2개월보장긴급 | 8 | 1 |
CPL | 2007 | 일반 | 4 | 129 |
CPL | 2007 | 일반 | 6 | 28 |
CPL | 2007 | 일반 | 7 | 11 |
CPL | 2008 | 2개월보장긴급 | 4 | 10 |
CPL | 2008 | 2개월보장긴급 | 6 | 1 |
CPL | 2008 | 일반 | 4 | 49 |
CPL | 2008 | 일반 | 6 | 18 |
CPL | 2008 | 일반 | 7 | 2 |
CPL | 2008 | 초청 | 4 | 63 |
CPL | 2008 | 초청 | 6 | 25 |
CPL | 2008 | 초청 | 7 | 1 |
CPL | 2008 | 초청 | 8 | 10 |
CPL | 2009 | 2개월보장긴급 | 4 | 15 |
CPL | 2009 | 2개월보장긴급 | 6 | 2 |
CPL | 2009 | 2개월보장긴급 | 7 | 1 |
CPL | 2009 | 단편 | 4 | 11 |
CPL | 2009 | 단편 | 6 | 1 |
CPL | 2009 | 단편 | 7 | 2 |
CPL | 2009 | 일반 | 4 | 21 |
CPL | 2009 | 일반 | 6 | 5 |
CPL | 2009 | 일반 | 7 | 2 |
CPL | 2009 | 일반 | 8 | 1 |
데이터는 밑으로 쭉 연장되며 350여개의 데이터가 있습니다.
field는 총 6가지, year는 2007 ~ 현재 데이터까지 뽑아야 하며(2007~2016), section은 4가지 종류(2개월보장긴급,일반,초청,단편)가 있습니다.
data는 0~8까지 있으며 각 데이터를 field,year,secion 별로 0~8번의 데이터를 입력하고 그 합계를 구하고 싶습니다.
field | year | section | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | SUM |
---|---|---|---|---|---|---|---|---|---|---|---|---|
CPL | 2007 | 2개월보장긴급 | 0 | 0 | 0 | 0 | 5 | 0 | 2 | 0 | 1 | 8 |
CPL | 2007 | 일반 | 0 | 0 | 0 | 0 | 129 | 0 | 28 | 11 | 0 | 168 |
CPL | 2007 | 초청 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
CPL | 2007 | 단편 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
CPL | 2008 | 2개월보장긴급 | 0 | 0 | 0 | 0 | 10 | 0 | 1 | 0 | 0 | 11 |
CPL | 2008 | 일반 | 0 | 0 | 0 | 0 | 49 | 0 | 18 | 2 | 0 | 69 |
CPL | 2008 | 초청 | 0 | 0 | 0 | 0 | 63 | 0 | 25 | 1 | 1 | 90 |
CPL | 2008 | 단편 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
CPL | 2009 | 2개월보장긴급 | 0 | 0 | 0 | 0 | 15 | 0 | 2 | 1 | 0 | 18 |
CPL | 2009 | 일반 | 0 | 0 | 0 | 0 | 21 | 0 | 5 | 2 | 1 | 29 |
CPL | 2009 | 초청 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
CPL | 2009 | 단편 | 0 | 0 | 0 | 0 | 11 | 0 | 1 | 2 | 0 | 14 |
첫번째 표 데이터를 두번째 표와 같이 나올 수 있도록 변경하고 싶습니다.
각 field별, 년도별, section별로 각 줄이 SUM이 0 이여도 표시될수 있어야 합니다.
쿼리로 처리 가능한 문제인지 정확히모르겠습니다.
많은 조언 부탁드리겠습니다. 감사합니다.
SELECT field, year, section , SUM(DECODE(DATA,0,COUNT,0)) 0 , SUM(DECODE(DATA,1,COUNT,0)) 1 , SUM(DECODE(DATA,2,COUNT,0)) 2 , SUM(DECODE(DATA,3,COUNT,0)) 3 , SUM(DECODE(DATA,4,COUNT,0)) 4 , SUM(DECODE(DATA,5,COUNT,0)) 5 , SUM(DECODE(DATA,6,COUNT,0)) 6 , SUM(DECODE(DATA,7,COUNT,0)) 7 , SUM(DECODE(DATA,8,COUNT,0)) 8 , SUM(COUNT) SUM FROM () GROUP BY field, year, section ORDER BY field, year, section ;
이런식으로 하면 되겠지만..
이미 위 데이터가 GROUP BY로 만들어진 것이고 DECODE문을 이용했다면
위에 DECODE 조건을 함께 적용하면 될듯 합니다.
기존 쿼리의 GROPY BY에는 DATA 컬럼이 들어 갔겠지만..
그 컬럼을 DECODE에 사용하고 field, year, section 로만 GROUP BY 하시면 될거 같네요..
원본 쿼리가 있다면 좀더 확인이 가능할 수도 있겠네요..