0

需要一些帮助/方向...

我有一个查询,提供了许多地点所需的库存清单...
-Location
-SKU
-QtyNeeded

我有另一个查询,它给了我可用库存的列表......并且库存是序列化的(唯一编号)。
-SKU
-序列号

我试图达到的最终结果......是运行一个查询,该查询将根据他们需要的每个 sku 的数量将可用的序列号分配给一个位置。

例子...

查询1
Store1 SKU1 2
Store1 SKU2 1
Store2 SKU1 1
Store2 SKU2 2

查询2 SKU1串行 1 SKU1 串行2 SKU1 串行3 SKU1 串行4 SKU1 串行5 SKU2 串行6 SKU2 串行7 SKU2 串行
8
SKU2 串行 9 SKU2 串行 10 SKU3 串行 11 SKU3 串行12










期望的结果...<br> Store1 SKU1
序列号
Store1 SKU1 序列号2 Store1 SKU2 序列号6 Store2 SKU1 序列号3 Store2 SKU2 序列
号7 Store2
SKU2 序列
号8

谢谢!
达林

4

1 回答 1

0

尝试对查询 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:

SKU1 序列号 1 1
SKU1 序列号2 2
SKU1 序列号 3 3
SKU1 序列号 4 4
SKU1 序列号 5 5
SKU2 序列号 6 1
SKU2 序列号 7 2
SKU2 序列号 8 3
SKU2 序列号 9 4
SKU2 序列号 10 5
SKU3 序列号 11 1
SKU3 序列号 12 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 子句告诉它何时终止递归。

于 2013-05-29T20:07:11.923 回答