[ORACLE] 통계쿼리 0 1 917

by 최성훈 [SQL Query] [2017.05.24 14:24:06]


1.PNG (22,453Bytes)
2.PNG (24,403Bytes)

안녕하세요 여기 처음가입한 사람입니다.. 

하다가 도무지 답이 안나와서 가입하고 글을써봅니다

아래가 문제의 쿼리입니다.

SELECT DEPT_CD  AS 분류
      ,GOOD_NM  AS 메뉴명
      ,TO_CHAR(TRUNC(TO_DATE(OPER_DT),'D'),'WW') AS 판매주차
      ,sum(qty) AS 판매수량
    --  ,to_char(to_date(OPER_DT), 'day')
     ,CASE WHEN to_char(to_date(OPER_DT),'day')='일요일' THEN  sum(qty) END 일요일_판매수량
     ,CASE WHEN to_char(to_date(OPER_DT),'day')='월요일' THEN  sum(qty) END 월요일_판매수량
     ,CASE WHEN to_char(to_date(OPER_DT),'day')='화요일' THEN  sum(qty) END 화요일_판매수량
     ,CASE WHEN to_char(to_date(OPER_DT),'day')='수요일' THEN  sum(qty) END 수요일_판매수량
     ,CASE WHEN to_char(to_date(OPER_DT),'day')='목요일' THEN  sum(qty) END 목요일_판매수량
     ,CASE WHEN to_char(to_date(OPER_DT),'day')='금요일' THEN  sum(qty) END 금요일_판매수량
     ,CASE WHEN to_char(to_date(OPER_DT),'day')='토요일' THEN  sum(qty) END 토요일_판매수량
FROM  TR_ITEM
WHERE oper_dt between '20160101' and '20161131'
AND   good_nm='머슴밥'
GROUP BY TO_CHAR(TRUNC(TO_DATE(OPER_DT),'D'),'WW'),DEPT_CD,OPER_DT,GOOD_NM
having  sum(qty)>0
ORDER BY DEPT_CD

위의 쿼리를 실행하면

처음 그림처럼 나오게됩니다.

제가 원하는 결과는 맨아래의 그림처럼

한줄로 나오게 하는것인데 어떻게 해야할까요...

     

by 마농 [2017.05.24 15:13:49]

1. CASE(SUM) 형태로 하셨네요.
   - SUM(CASE) 형태로 바꾸세요.
   - Group By 에 oper_dt 는 제외되어야 합니다.
2. TO_DATE(oper_dt) 는 오류 가능성이 높은 잘못 작성된 코드입니다.
   - TO_DATE(oper_dt, 'yyyymmdd') 로 바꾸세요.
3. 그룹바이 기준이 모호합니다.
   - 일주일 기준(일~토) 과 주차 기준(WW) 가 서로 불일치 합니다.
   - ww 의 주차는 1월1일부터 7일까지가 1주차입니다.
   - 그룹 기준을 명확하게 설정하셔야 할 듯.

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