作为数据迁移的一部分,尝试根据另一个表中的值更新表中的列。所有列都存在于联接中的两个表中,但当我运行以下命令时将收到意外的错误消息:
UPDATE CSB
SET IFS10_SCHEDULE = CS.SCHEDULE_NO
FROM IC_U_CUSTOMER_SCHED_B CSB
JOIN CUST_SCHED CS
ON CSB.CUSTOMER_NO = CS.CUSTOMER_NO
AND CS.SHIP_ADDR_NO = CSB.SHIP_ADDR_NO
AND CSB.CUSTOMER_PART_NO = CS.CUSTOMER_PART_NO
AND CSB.DOC_NO = CS.DOC_NO
AND CSB.AGREEMENT_ID = CS.AGREEMENT_ID
AND CSB.CUST_SCHEDULE_TYPE = CS.CUST_SCHEDULE_TYPE;
我收到错误:
Error at Command Line : 3 Column : 1
Error report -
SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
我肯定这一定是语法问题,但不知道在哪里。有什么想法吗?
编辑-谢谢,解决方案。为了学习的目的(我在过去20年中做了this,只是学习PL-SQL),我也重新编写了这个查询,作为一个合并,但这也失败了。这里有明显的问题吗?
MERGE INTO IC_U_CUSTOMER_SCHED_B CSB
USING CUST_SCHED CS
ON (CSB.CUSTOMER_NO = CS.CUSTOMER_NO
AND CS.SHIP_ADDR_NO = CSB.SHIP_ADDR_NO
AND CSB.CUSTOMER_PART_NO = CS.CUSTOMER_PART_NO
AND CSB.DOC_NO = CS.DOC_NO
AND CSB.AGREEMENT_ID = CS.AGREEMENT_ID
AND CSB.CUST_SCHEDULE_TYPE = CS.CUST_SCHEDULE_TYPE)
WHEN MATCHED THEN UPDATE SET CSB.IFS10_SCHEDULE = CS.SCHEDULE_NO
WHERE CSB.IFS10_SCHEDULE != CS.SCHEDULE_NO;
发布于 2019-08-06 08:04:18
应该是
UPDATE ic_u_customer_sched_b csb
SET csb.ifs10_schedule =
(SELECT cs.schedule_no
FROM cust_sched cs
WHERE csb.customer_no = cs.customer_no
AND cs.ship_addr_no = csb.ship_addr_no
AND csb.customer_part_no = cs.customer_part_no
AND csb.doc_no = cs.doc_no
AND csb.agreement_id = cs.agreement_id
AND csb.cust_schedule_type = cs.cust_schedule_type);
https://stackoverflow.com/questions/57371479
复制相似问题