【发布时间】:2017-02-01 19:45:43
【问题描述】:
我有一个查询返回以下信息。我使用 Over(PARTITION BY 来包含行号。每次我的 work_center_S 开始新订单#时我都会捕获,但是当 part_number 与之前的订单/行相同时,我想排除新订单的开始. 我无法使用 DISTINCT 函数,因为 part_number 可能一天会出现很多次,每次发生这种变化时我都需要捕获。
[![查询返回][1]][1]
[1]:https://i.stack.imgur.com/IKvsR.jpg
+----+--------+---------------+-------------+------+
| rn | Order# | work_center_S | part_number | Hour |
+----+--------+---------------+-------------+------+
| 1 | 7098 | TB312 | 37203 | 1 |
+----+--------+---------------+-------------+------+
| 2 | 8797 | TB312 | 37194 | 4 |
+----+--------+---------------+-------------+------+
| 3 | 8802 | TB312 | 37355 | 11 |
+----+--------+---------------+-------------+------+
| 4 | 0946 | TB312 | 37194 | 15 |
+----+--------+---------------+-------------+------+
| 5 | 0698 | TB312 | 37203 | 18 |
+----+--------+---------------+-------------+------+
| 6 | 0699 | TB312 | 37203 | 21 |
+----+--------+---------------+-------------+------+
【问题讨论】:
-
请始终指定您使用的 SQL Server 版本。例如,
LAG/LEAD可能会派上用场,但如果您使用的是 SQL Server 2000(我们必须猜测),则不会。 -
我使用的是 SQL Server 2016。我仍在试图弄清楚如何让 stackoverflow 正确显示我的返回结果。如果显示我的查询结果,则不应显示 rn 6,因为虽然 rn 5 和 rn 6 具有不同的 Order#,但两个 Order# 都用于相同的 part_number。就业务规则而言,这样做的原因是,某些 work_center_S 可能只生成一个 part_number,但它们不能无限期地运行一个 Order#。但 part_number 的变化是我需要捕捉的重要事件。
-
好吧,我认为这不应该是用于显示简单表格结果的代码 sn-p。见advanced help for the editor。
标签: sql sql-server tsql sql-server-2016