【发布时间】:2013-10-17 13:07:00
【问题描述】:
目前确实是个难题,因为这是我尝试在 SQL 中做的事情,但我知道应该用另一种语言(例如 PHP)来做。
基本上我拥有的是一个包含订单号和与政策相关的产品代码的数据库。
对于某些订单有多个阶段,例如取消和升级(例如,当升级时,原来的政策被取消,然后为差价进行升级)
我想做的是运行一个查询,该查询将排除与升级订单相关的所有取消(在产品代码中指定为 UP),但保留与详细信息更改相关的所有取消(指定作为产品代码中的 CD)。
简而言之; 该查询将需要查找所有订单,包括取消订单,然后删除与 UP 具有相同订单号的任何取消订单。
我知道这基本上可以通过查找所有 UP 产品代码和相关订单号的“foreach”来完成,然后删除与该订单号相关的所有取消 - 但我不知道如何实现这一点在 SQL 中,无需临时创建多个表并在之后删除它们。
表结构如下:
| Order Number | Product Code | Transaction Value |
| 1 | RRCN | -30 |
| 1 | RRUP | 12 |
| 2 | SMFP | 30 |
| 3 | SMCN | -12 |
| 3 | SMCD | 12 |
| 4 | HUCN | -30 |
所以我需要查询来显示所有表,但删除与 RRUP 相关的 RRCN。所以查询应该寻找 RRUP,看到它是订单 1,然后找到与订单 1 相关的 RRCN 并将其从结果中删除 - 请注意,结果不是原始表。
有什么想法吗?非常感激! (我正在运行 SQL Server 2008)
【问题讨论】:
-
请显示表结构,最好带有一些虚拟数据和详细的预期输出、删除等
-
感谢 T 我,我现在已经添加了这些......只是一些格式问题会尝试正确!
标签: sql sql-server foreach orders