需要一些帮助/方向…
我有一个查询,给了我一个清单,在许多地方需要的库存…
位置
sku
-QtyNeeded
我有另一个查询,给了我一个可用库存列表…并且库存是序列化的(唯一的数字)。
sku
serialnumber
我想要达到的最终结果是……是运行一个查询,该查询将根据每个sku所需的数量为位置分配可用的SerialNumbers。
例子。
Query1
Store1 SKU1 2
Store1 SKU2 1
Store2 SKU1 1
Store2 SKU2 2
Query2
SKU1 serial1
SKU1 serial2
SKU1 serial3
SKU1 serial4
SKU1 serial5
SKU2 serial6
SKU2 serial7
SKU2 serial8
SKU2 serial9
SKU2 serial10
SKU3 serial11
SKU3 serial12
想要的结果…Store1 SKU1 serial1
Store1 SKU1 serial2
Store1 SKU2 serial6
Store2 SKU1 serial3
Store2 SKU2 serial7
Store2 SKU2 serial8
谢谢!
达林
尝试对查询1使用递归CTE(公共表表达式)来转
<>之前存储1 SKU1 2仓库1 SKU2 1仓库2 SKU1 1仓库2 SKU2 2之前到
<>之前仓库1 SKU1 2 1存储1 SKU1 2 2仓库2 SKU1 1 3仓库1 SKU2 1 1仓库2 SKU2 2 2仓库2 SKU2 2 3之前然后使用ROW_NUMBER () OVER ()
添加查询2的行号:
然后,您应该能够根据添加的新行号和SKU #将结果连接在一起。
编辑 -----------
添加CTE示例:
;with LocationQtyData as(
select
location, sku, qtyneeded, 1 as rowNum
from #LocationQtys
union all
select
#LocationQtys.location, #LocationQtys.sku, #LocationQtys.qtyneeded, rowNum + 1 as rowNum
from #LocationQtys
join LocationQtyData
on LocationQtyData.location = #LocationQtys.location
and LocationQtyData.sku = #LocationQtys.sku
where LocationQtyData.rowNum < #LocationQtys.qtyneeded
)
select * from LocationQtyData
order by
location, sku, qtyneeded, rowNum
将#LocationQtys替换为您的表名。注意,在查询的"union all"部分,我们可以引用CTE的名称("LocationQtyData")来递归地遍历它。where子句告诉它何时终止递归。