쇼핑몰 DB인데요
날짜별, 매입처별로 매입단가를 조회를 하는데 각 상품별로 해당 날짜 이전의 매입단가 가 같이 노출이 되어야 합니다
이전가는 해당 날짜 이전의 가장 최근 단가를 가져오면 됩니다.
======================
검색일자 : 2015-04-14
매입처 | 품명 | 수량 | 단가 | 이전가
쿼리 하나로 처리할 방법이 있을까요?
간략하게 DB구성은 아래와 같은 형태로 되어있습니다.
테이블 Product_Log
매입처
품명
수량
단가
매입일자
상품별로 검색일자 이전의 가장 최근 단가를 가져올때 현재는
중복 쿼리로 되서
처음 쿼리에서 매입처부터해서 단가까지 데이타를 가져오고
그 아래쪽에서 품명과 검색일자로 이전의 단가를 가져오는 쿼리로 작성되어 있습니다.
이러다보니까 조회시간이 많이 걸립니다.
select * from Product_Log where 검색일자='2015-04-14'
...
...
이전단가 조회
select 단가 from Product_Log where 검색일자<'2015-04-14' and 품명='품명'
..
..
이 부분을 하나의 쿼리로 합칠 방법이 있을까요?
Comment 3
-
건우아빠
2015.05.12 22:58
-
악마곰
2015.05.13 09:28
서브 쿼리로 아래와 같이 사용하면문제 없을 것으로 보입니다.참고 하세요declare @BaseDT datetime = '2015-05-01';with cte as(select '삼송' 매입처,'s6' 품목,100 수량, 10 단가, '2015-05-01' 구매일 union allselect '삼송','s5',100, 15, '2015-05-01' union allselect '삼송','s6',100, 9, '2015-04-25' union allselect '삼송','s5',100, 5, '2015-03-01' union allselect '엘쥐','g4',200, 20, '2015-05-01' union allselect '엘쥐','g4',100, 15, '2015-04-25')selecta.매입처, a.품목, a.수량, a.단가,(select top 1 b.단가 from cte b where b.구매일 < @BaseDT and b.품목 = a.품목 and b.매입처 = a.매입처 order by b.단가 desc) 최근입고단가,a.구매일from cte awhere a.구매일 = @BaseDT -
냥냥
2015.05.13 16:25
답변 감사드립니다.~
outer apply를 이용하시면 ...