거의 2 년 전에 다음 질문을 올렸고 완벽한 대답을 얻었으나 지금은 재고 부족 기간을 연장해야합니다. 여기에 원래의 질문과 대답 내가 제공 한입니다 :..재고 부족 재고 없음
"나는 재고 때문에 inStock의 및 품절 패턴을 결정해야 내가 항목, 위치, 재고 및 날짜를 표시하는 테이블이
내가보고 싶어 항목/위치가 재고가없고 시간이지나면서 점차적으로 변화하는 패턴이있는 경우 파일에 3 주간의 데이터가 포함되어 있습니다. 항목이 3 주 안에 지속적으로 재고가 있거나 재고가 부족한 경우
인벤토리가 0보다 큰 경우 항목이/위치가 재고가 없거나 인벤토리가 0이거나 부정적인 항목/위치가 재고가 없습니다.
어떤 도움을 주셔서 감사합니다.
샘플 데이터
Item, location, inventory, date
1243, 10, 2, 3/12/2012
1243, 10, 0, 3/13/2012
1243, 10, -2, 3/14/2012
1243, 10, -2, 3/15/2012
1243, 10, 4, 3/16/2012
그런 다음 추가 항목, 위치, 재고, 날짜 기록
. " 나는 완벽하게 작동이 답변을 받았다.SELECT item,
location,
SUM(CASE WHEN status = 'In Stock' AND prior_status = 'Out of Stock'
THEN 1
ELSE 0
END) moved_to_out_of_stock,
SUM(CASE WHEN status = 'Out of Stock' AND prior_status = 'In Stock'
THEN 1
ELSE 0
END) moved_to_in_stock
FROM (SELECT item,
location,
status,
lag(status) over (partition by item, location
order by dt) prior_status
FROM (SELECT item,
location,
(case when inventory <= 0
then 'Out of Stock'
else 'In Stock'
end) status,
dt
FROM your_table))
GROUP BY item, location
을 지금은이 발생할 때마다 '품절'. 많은 일이 있었다 기본적으로 어떻게 항목의 기간을 결정 할 수 있도록하려면 ..
: 주식마다의 아웃 위치가 품절이었다어떤 도움이 많이 감사합니다
편집 여기에 내가 현재 사용하는 쿼리
select ari.ITEM, x.LOCATION, MOVED_TO_OUT_OF_STOCK, MOVED_TO_IN_STOCK
from (select item, location,
SUM(CASE WHEN status = 'In Stock' AND prior_status = 'Out of Stock'
THEN 1
ELSE 0
END)
moved_to_out_of_stock,
SUM(CASE WHEN status = 'Out of Stock' AND prior_status = 'In Stock'
THEN 1
ELSE 0
END)
moved_to_in_stock
FROM (select item, location, status, lag(status)
over (partition by item, location
order by repl_date) prior_status
FROM (select item, location,(CASE WHEN (stock_on_hand - demo_stock - non_sellable_qty) <='0'--subtract demo stock and non sellable qty
then 'Out of Stock'
else 'In Stock'
end)
status, repl_date
from repl_results))
group by item, location) x, active_repl_items ari,
(select item, location, min(repl_date) as min_repl_date from repl_results
group by item, location)y,
(select item, location, repl_date, (STOCK_ON_HAND-DEMO_STOCK-NON_SELLABLE_QTY) AS NET_AVAIL from repl_results) z
where (x.item = ari.item or x.item = ari.primary_pack_no) --to account for pack_items
and x.item = y.item and x.item = z.item
and x.location = y.location and x.location = z.location
and y.min_repl_date = z.repl_date
and x.location = ari.location
고맙습니다. 불행히도, 내 SQL 지식은 내 코드에 귀하의 권고를 넣을 수 없을 정도로 너무 작습니다. 현재 질문에 기존 SQL 코드를 추가했습니다. 추천 코드를 원본에 넣을 수 있습니까? 고마워하고 고통스럽게해서 미안하지만 진심으로 도와 주셔서 감사합니다. – user1318132