【发布时间】:2018-03-27 05:58:13
【问题描述】:
如果这是重复的,我深表歉意,但我找不到我的特定问题的答案。我有一张表格,列出了销售订单上的产品及其各种数量。某些产品是其他产品的组件,并用标志表示。我想知道是否有办法为每个父/正常项目重置父/正常项目的运行总计。
这是表格数据和我想要的输出的示例:
OrderNo Item Qty Regular Line
349443 AFU20451-KIT1 1 Y 1
349443 AFU20451 0 N 2
349443 HAWKE-14252 1 N 3
349443 RGPM-25H4 1 N 4
349443 AV-003-265 1 Y 5
349443 AV-A00090-KIT 1 Y 6
349443 AV-A00091 1 N 7
349443 AV-A00090 1 N 8
349443 AV-00043 1 N 9
349443 AV457/310GR/FP 2 Y 10
想要的输出:
OrderNo Item Qty
349433 AFU20451-KIT1 3
349433 AV-003-265 1
349433 AV-A00090-KIT 4
349433 AV457/310GR/FP 2
如您所见,我想在每次显示 Y 时重置总和,仅包括父项(我可以解决这个问题,因为我可以保持项目的顺序相同,可以使用行号) .我一直在尝试使用 Over 和 Partition by 来做到这一点,但无济于事。让我知道这是否可行,或者您是否需要任何进一步的信息。
【问题讨论】:
-
这是假设您的记录有一些顺序,但我无法通过查看您的数据来判断我将如何对它们进行排序。你是如何在你的声明中排序的?
-
提示:分区方式
-
您将在这里找到的问题是数据库没有内在顺序。如果没有 id 列或其他方法,您无法保证每次返回的记录顺序都相同。在您的示例中,您是否有一个 ID 字段或保持顺序的东西?
-
是的,抱歉,我没有包含它,但是有一个列按照它们应该在的确切顺序列出了项目。组件产品始终直接位于父项目的下方。
-
您能否在上面的数据屏幕中包括该列以保证项目的顺序如上所示。
标签: sql sql-server tsql