[英]How to convert UPDATE outer apply to Update Left Join?
I am running this query on sql 2008 but my client need this to run on sql 2000. can someone help me convert this query to sql 2000? 我正在sql 2008上运行此查询,但是我的客户端需要在sql 2000上运行此查询。有人可以帮助我将此查询转换为sql 2000吗?
Update cust set Balance = dv.balance
From (SELECT hb.Balance,dv.custnum FROM [#custnumtbl] as dv
OUTER APPLY (SELECT TOP 1 Balance,custnum FROM CLedger b
WHERE b.CustNum = dv.custnum ORDER BY Pdate DESC) as hb) as dv
where cust.CustNum = dv.custnum
I'm pretty sure this is equivalent to the following correlated subquery: 我很确定这等效于以下相关子查询:
Update cust
set Balance = (SELECT TOP 1 cl.Balance
FROM [#custnumtbl] dv JOIN
Cledger b
ON b.CustNum = dv.custnum
WHERE dv.custnum = cust.CustNum
ORDER BY Pdate DESC
);
SQL2000 does not support ORDER
inside the view SQL2000不支持视图内的ORDER
UPDATE cust SET Balance = cl.Balance
FROM
cust
INNER JOIN [#custnumtbl] tmp ON cust.CustNum = tmp.CustNum
LEFT OUTER JOIN CLedger cl ON
cl.CustNum = cust.CustNum
AND PDate = (SELECT MAX(PDate) FROM CLedger WHERE CustNum = cl.CustNum)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.