这是完美的,直到订单进入,其中stationID不是= 2。我的逻辑是sql搜索两个条件满足并显示那些结果,而不是查看timeplaced的最大值,如果stationid不= 2则不显示它正在做什么。
SELECT OrderNo
FROM Orders
WHERE TimePlaced = (SELECT max(TimePlaced) FROM Orders)
AND StationID=2
答案 0 :(得分:1)
将您的条件添加到内部选择中
SELECT OrderNo
FROM Orders
WHERE TimePlaced =
(
SELECT max(TimePlaced)
FROM Orders
WHERE StationID=2
)
AND StationID=2
但是如果你不想两次添加条件,那么只需将内部选择与外部选择“链接”:
SELECT OrderNo
FROM Orders O
WHERE TimePlaced =
(
SELECT max(TimePlaced)
FROM Orders
WHERE StationID=O.StationID
)
AND StationID=2
您可以尝试的另一种方法是使用CTE
和ROW_NUMBER
:
;WITH OrdersCTE AS
(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY StationID ORDER BY TimePlaced Desc) AS rn
FROM Orders
)
SELECT *
FROM OrdersCTE
WHERE rn = 1
AND StationID = 2