Sql 如何将更新外部应用转换为更新左连接?
我正在sql 2008上运行此查询,但我的客户端需要在sql 2000上运行此查询。 有人能帮我把这个查询转换成sql 2000吗Sql 如何将更新外部应用转换为更新左连接?,sql,sql-server,Sql,Sql Server,我正在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.custnu
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
我很确定这相当于以下相关子查询:
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
);
我很确定这相当于以下相关子查询:
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不支持视图内部的
顺序
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)
SQL2000不支持视图内部的
顺序
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)