小编Pau*_*aul的帖子

使用游标迭代sql数据

所以,我有一个名为"bom"的SQL表.

  • ParentPartId
  • ChildPartId

想象一下,我有完整的数据表,如(未知数量的子级别):

| 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)

sql t-sql sql-server sql-server-2008

1
推荐指数
1
解决办法
90
查看次数

C#Lambda OrderByDescending和Sum

我想按数量总和的降序对值列表进行排序,而不会覆盖数量的原始值.

所以,假设我的数据列表是:

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添加到该值上.但是,在我这样做之前,只想看看是否有更简单的方法.

c# lambda aggregate

1
推荐指数
1
解决办法
294
查看次数

标签 统计

aggregate ×1

c# ×1

lambda ×1

sql ×1

sql-server ×1

sql-server-2008 ×1

t-sql ×1