[英]Is there a way to arbitrarily pick one result in SQL query without doing GROUP BY
[英]pick enough items from several locations without doing rbar
我有一個倉庫,每個項目編號可以在幾個地方。 我有一個首選訂單從哪里挑選。
ITEM LOC IN_STOCK
item_1 loc_1 3
item_1 loc_2 3
item_1 loc_3 2
item_2 loc_1 4
首選順序是位置名稱的函數,為了簡單起見,我們只能說它是order by loc asc
我有一個訂單
item_1 4
item 2 2
我想要一個選項列表進入第三個表。
item_1 loc_1 3
item_1 loc_2 1
item_2 loc_1 2
如果我只是加入,我會得到三行item_1
我想在單個sql語句中執行它,而不是RBAR,Row By Agonizing Row循環。
我正在使用Mssql 2008
請嘗試使用CTE:
;with T as(
select *,ROW_NUMBER() over(partition by item order by in_stock, LOC desc) RNum
From warehouse)
select
x.Item,
x.Loc,
(case when SM-ItemNum<=in_stock then SM-ItemNum else in_stock end) as in_stock
From(
select *,(select SUM(b.In_stock) from T b where b.item=a.item and b.RNum<=a.RNum) SM
from T a
)x inner join orders c on x.item=c.item
where SM-ItemNum>0
在這里檢查解決方案SQL Fiddle Demo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.