SQL根据特定条件返回不同的行

时间:2016-11-01 11:10:43

标签: sql sql-server

我确定这是否可以在SQL中使用,但我的案例陈述和小组的组合并不起作用。这是我使用..

形状的一些测试数据

enter image description here

它显示订单中的商品。在此顺序中,客户已修改笔的订单并将金额增加到15.因此原始订单项ID 123标记为已取代,并创建新项目行,ID 158,并填充PreviousVersion列前一项itemId。 AmendedStatusId是修改项目的状态。因此,在示例中,ItemId 158是ItemId 123的更新版本。并且额外的笔尚未支付,因为它们是AwaitingApproval。我知道这不是最好的布局数据,但它是我能够合作的。

我试图做的是当修改的项目没有被支付以选择旧项目时,所以在这个例子中返回ItemIds 123和124.当ItemId 123的AmendedStatusId更新为Paid时,我想要返回ItemId 124和158.这可能吗?

提前致谢:)

1 个答案:

答案 0 :(得分:0)

这种结构应该让你开始。

select isnull(paidItemId, unpaidItemId) itemId
from yourTables
left join (subquery to identify paid items) paidItems on something
left join (subquery to identify unpaid items) unpaidItems on something
etc