所以,我有一个名为"bom"的SQL表.
想象一下,我有完整的数据表,如(未知数量的子级别):
| PARENTPARTID | CHILDPARTID |
+---------------+--------------+
| NK-FS-DR-62DR | 2001020060 |
| 2001020060 | 2002014018 |
| 2002014018 | 120011 |
| NK-WH-DR-3MH | 2001916023 |
Run Code Online (Sandbox Code Playgroud)
基本上我想选择"NK-FS-DR-62DR",它会选择它下面的所有子部件,所以它看起来像
| PARENTPARTID | CHILDPARTID |
+---------------+--------------+
| NK-FS-DR-62DR | 2001020060 |
| 2001020060 | 2002014018 |
| 2002014018 | 120011 |
Run Code Online (Sandbox Code Playgroud)
boms 可以深入到未知数量的水平.
所以,我正在寻找某种形式的光标来代替所有的子级别.
我目前有一个游标,但我想不出一种迭代数据的方法.
这是我当前的代码(仅深入1级):
CREATE TABLE #tmpBillOfMaterial
(
ParentPartId VARCHAR(18),
ChildPartId VARCHAR(18)
)
DECLARE @ParentPartId VARCHAR(18)
INSERT INTO #tmpBillOfMaterial ( ParentPartId, ChildPartId )
SELECT b.ParentPartId, b.ChildPartId
FROM …Run Code Online (Sandbox Code Playgroud) 我想按数量总和的降序对值列表进行排序,而不会覆盖数量的原始值.
所以,假设我的数据列表是:
Reason=Quality, Quantity=10
Reason=Quality, Quantity=10
Reason=Customer, Quantity=8
Reason=Carrier, Quantity=17
Reason=Customer, Quantity=1
Run Code Online (Sandbox Code Playgroud)
我如何执行lambda表达式来按总量排序?我希望得到以下内容:
Reason=Quality, Quantity=10
Reason=Quality, Quantity=10
Reason=Carrier, Quantity=17
Reason=Customer, Quantity=8
Reason=Customer, Quantity=1
Run Code Online (Sandbox Code Playgroud)
质量是第一位的,因为总价值是20.客户是最后的,因为总价值是1.
这就是我目前所拥有的,但无论如何都没有修改数据而不修改原始数据
eData.OrderByDescending(o => o.Quantity);
Run Code Online (Sandbox Code Playgroud)
我能想到完成这项任务的唯一方法是添加另一个变量并选择Select with Sum将所有新变量添加到该值,然后将OrderByDescending添加到该值上.但是,在我这样做之前,只想看看是否有更简单的方法.