Account
=======
int AccountId PK
Order
=====
int OrderId PK
int AccountId FK
DateTime Date
int Status
对于每个帐户,我想知道状态为 1(成功)的最新订单,否则是状态为 0(不成功)的最新订单。日期不是唯一的。
我已经在这样的视图中使用相关的子查询来处理这个......
SELECT
a.AccountId,
(SELECT TOP 1
o.orderId
FROM
tbl_order o
WHERE
o.Accountid = a.AccountId
AND
o.Status IN (0, 1)
ORDER BY
o.Status DESC, o.Date DESC
) AS OrderId
FROM
tbl_account a
...但它很慢。
有没有更好的办法?