我一直在看这个更新声明,其中包括对 cte 的连接。无法找出问题所在。它给了我:“语法错误:意外的‘更新’。(第 7 行)”。不知道我错过了什么。谢谢!
WITH SALESORDER_CTE AS
(
SELECT TO_TIMESTAMP(ORDERITEMDRUGMODIFIED, 'MM/DD/YYYY HH12:MI:SS PM') AS CUSTBODY_ORDERITEMDRUGMODIFIED, *,
ROW_NUMBER() OVER (PARTITION BY TRANID ORDER BY ORDERITEMDRUGMODIFIED DESC) AS RN
FROM SALESORDER
)
UPDATE a
SET a.ORDERITEMDRUGMODIFIED = b.ORDERITEMDRUGMODIFIED
FROM SALESORDERLINE AS a
INNER JOIN SALESORDER_CTE AS b ON a.TRANSACTION = b.ID
WHERE b.RN = 1
AND b.ID = 5369076;
我在这里看到两个语法问题。首先,连接条件是隐式的,应该出现在
WHERE
子句中,因为不支持ON
。其次,SET
子句的左侧不应有别名。试试这个版本:
UPDATE a
SET ORDERITEMDRUGMODIFIED = b.ORDERITEMDRUGMODIFIED
FROM SALESORDERLINE AS a
INNER JOIN SALESORDER_CTE AS b
WHERE a.TRANSACTION = b.ID AND
b.RN = 1 AND
b.ID = 5369076;