【发布时间】:2020-06-09 18:48:56
【问题描述】:
抱歉描述太糟糕了,但我很难说出这个
我的2张桌子是这样的
tblParent..
OrderID Customer
789 Bob
tblChild
OrderID SortOrder Price
789 1 20.00
789 3 30.00
我希望我的语句的输出是 OrderID(来自 tblParent)、Customer(来自 tblParent)、Price1(这将是 20.00,因为它是 tblChild 的第一个价格(基于 SortOrder))、Price2(这将是 30.00,因为它是 tblChild 中此 OrderID 的下一个最高 SortOrder
我试过了..
SELECT A.OrderID, A.Customer, B.Price, C.Price
FROM tblParent
LEFT JOIN (SELECT Price from tblChild) B on A.OrderID=B.OrderID
LEFT JOIN (SELECT Price from tblChild) C on A.OrderID=B.OrderID
我知道我需要将MIN() 放在某个地方以获取第一个价格 (20.00),但是我该如何获取第二个最低 SortOrder 的价格?
我在做WHERE SortOrder=1 然后在下一列WHERE SortOrder=2 等等,但后来我意识到如果有人从子表中删除了一行,那么SortOrder 会丢失它的序列(因此在示例中,第 2 行被删除并且这就是为什么它的 1 后跟 3)。
真的希望有人可以帮忙。谢谢。
【问题讨论】:
标签: sql database group-by pivot window-functions