고수님들 부탁드립니다 0 3 457

by 스티브1조 [SQL Query] [2018.02.21 15:54:01]


디비는 오라클이구요 

총준비수량이구요 

SELECT  GIFT_NM , GIFT_READY_CNT      
 FROM EVT_SCRATCH_GIFT      
 ORDER BY GIFT_READY_CNT;     

요거랑

당첨수량 
 SELECT  SUM(DECODE( GIFT_CD,'SMEG',1, 0)) AS 냉장고,  
         SUM(DECODE( GIFT_CD,'LGTROM',1, 0)) AS 트롬세탁기,  
         SUM(DECODE( GIFT_CD,'CAMERA',1, 0)) AS 카메라, 
         SUM(DECODE( GIFT_CD,'AIR',1, 0)) AS 공기청정기, 
         SUM(DECODE( GIFT_CD,'HAIR',1, 0)) AS 헤어드라이기, 
         SUM(DECODE( GIFT_CD,'SPECKER',1, 0)) AS 스피커, 
         SUM(DECODE( GIFT_CD,'SEVEN',1, 0)) AS 발마사지기, 
         SUM(DECODE( GIFT_CD,'POT',1, 0)) AS 드롱기팟, 
         SUM(DECODE( GIFT_CD,'TABLE',1, 0)) AS 화장대 
 FROM EVT_SCRATCH_WIN ; 

같이 한번에 뽑고싶은데 어렵네요 그리고 남은수량까지요 해결해주시면 감사하겠습니다

 

by 아발란체 [2018.02.21 16:06:36]

위랑 아래 컬럼수가 다르기 때문에 원쿼리로 억지로 뽑는 것은 권장하지 않습니다.

그리고 남은 수량은 좀 단서가 부족한 것 같은데,

EVT_SCRATCH_GIFT 테이블도 GIFT_CD 속성이 있다면

2번째 쿼리에서 테이블명만 EVT_SCRATCH_GIFT으로 바꾸면 상품별 준비수량이 출력될거고, - ①

2번째 쿼리는 말씀처럼 당첨수량이 출력되고 있으니 - ②

①와 ②를 조인하면 상품별 준비수량 및 당첨수량이 출력될 것 같고,

여기서 준비수량 - 당첨수량 하면 남은수량 확인이 될 것 같습니다.

 


by 마농 [2018.02.21 16:13:33]
-- 한줄로 나열하는 것은 좋은 방법이 아닙니다.
-- 아래로 나열하는 방법 추천합니다.
SELECT a.gift_cd
     , a.gift_nm
     , a.gift_ready_cnt
     , b.gift_win_cnt
     , a.gift_ready_cnt - NVL(b.gift_win_cnt, 0) gift_remain_cnt
  FROM evt_scratch_gift a
     , (SELECT gift_cd
             , COUNT(*) gift_win_cnt
          FROM evt_scratch_win
         GROUP BY gift_cd
        ) b
 WHERE a.gift_cd = b.gift_cd(+)
;

 


by 스티브1조 [2018.02.21 16:47:31]

초고수님 감사합니다

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