쿼리 퀴즈문제

2008.11.20 18:28 개발언어/SQL

--명구선배님

[퀴즈]

출판업 출고테이블이 있습니다.
출고 및 반품 처리시 입력된 거래처 와 품목코드에
해당하는 가장 최근 날짜에 입력된 출고율을 그대로
이번 출고 반품 처리시에도 적용하기 위해서
세부내역 첫번째 컬럼 아이템코드에 아이템코드를 입력하고
키다운시 출고율을 가져와야 합니다. 이때 쿼리는 얼케 짤까?

테이블 t_sale_deliverysub
컬럼 gubun , itemcode , custcode , outrate , condate

 기본조회
 select outrate
 from t_sale_deliverysub
 where gubun='01' and custcode='?????'
 and itemcode='?????'


 내일아침까지 가장 최적화된 쿼리를 짜보세용

 아마 위에 예시가 이경우만이 아니라 많은 경우에 사용할거에요
 컬럼 a(수량) , b(날짜) 가 있는데 가장 최소 최대의 b(날짜)에
 해당하는 a(수량) 의 값을 가져올 경우가 많지요


강민기 연구원

select a.outrate
from t_sale_deliverysub as a
where a.gubun = '01' and a.custcode = 'xxxx'
and a.itemcode = 'xxxx' 
and a.condate = (select max(b.condate) from t_sale_deliverysub as b where a.gubun = b.gubun and a.condate >= b.condate)


 select top 1 a.outrate
 from t_sale_deliverysub a
 where a.gubun='01' and a.custcode='?????'
 and a.itemcode='?????'
 and a.condate = (select max(condate) from t_sale_deliverysub  where gubun='01' and custcode='?????' and itemcode='?????' )


 select top 1 a.outrate
 from t_sale_deliverysub a
 where a.gubun='01' and a.custcode='?????'
 and a.itemcode='?????'
 order by a.condate desc


select convert(money,stuff(max(a.condate + convert(varchar(8),a.outrate)),1,8,''))
 from t_sale_deliverysub a
 where a.gubun='01' and a.custcode='?????'
 and a.itemcode='?????'

신고