행간 비교 법 좀 알려주세요. 0 2 2,934

by 볼우물 [SQL Query] [2010.03.10 17:48:16]


xdlfmq.jpg (153,912Bytes)

안녕하세요.
아 이거 정말 기초인 것 같은데
검색을 해봐도 안나오네요.
뭐라고 검색을 해야 할지..
행비교라고 검색해도 안나오고ㅗ...


select rnum
  ,paid_date
  ,cnt
  ,amt
  from (
select rownum rnum
  ,paid_date
  ,cancel_in_cnt2 cnt
  ,cancel_in_amt2 amt
  from vas_daesa_tab
 where paid_date between '20100307' and '20100309'
 )

위의 쿼리문을 실행하면
첨부한 이미지와 같은 결과가 나오거든요.




제가 구하고 싶은 것은 같은 paid_date에서
rnum이 큰 것만 뿌리고 싶거든요.
그러니까 정확히 제가 필요한 것은 03월07일에는 rnum이 2인 것.
8일에는 4인 것 9일에는 6인 것만 뿌리고 싶은거죠.
데이터는 같은 날에 세번도 들어올 수도 있기에
각 해당일마다 rnum을 비교해서 큰 것만 뿌리고 싶습니다
고수님들의 많은 조언 부탁드립니다.
감사합니다.

by 도가니 [2010.03.10 18:02:43]
with vas_daesa_tab as (
select 1 rnum, '20100307' paid_date, 6 cnt, 311340 amt from dual union all
select 2, '20100307', 17, 938330 amt from dual union all
select 3, '20100308', 275, 55675050 amt from dual union all
select 4, '20100308', 348, 75793570 amt from dual union all
select 5, '20100309', 246, 46016970 amt from dual union all
select 6, '20100309', 331, 63487310 amt from dual
)
select * from (
select a.*, row_number() over(partition by paid_date order by rnum desc) rk
from vas_daesa_tab a
) where rk =1

by 볼우물 [2010.03.10 18:07:10]
감사합니다. 잘활용하도록 하겠습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입