sql - 这个合并语句有什么问题?

标签 sql oracle merge oracle9i ora-00904

我对 Oracle 比较陌生,并且在下面编写了合并语句,当我运行它时,它会生成“ora-00904 错误 vwe_cpr_info.rin_per_id 无效标识符”消息。

我已经检查过, View 和列名称是正确的,我确实有权访问该 View ,并且我没有尝试更新联接中使用的字段。

我已经看了这么久了,现在我想我已经不再看到它了,任何建议都将受到欢迎。它位于 Oracle 9i 环境中。

MERGE INTO vws_art_alert 
USING (
   SELECT rin_date_unreg, rin_per_id
   FROM vwe_cpr_info
   WHERE rin_date_unreg >= '27-SEP-11'
   AND rin_date_unreg <= '13-JAN-12')
ON (vws_art_alert.art_per_id = vwe_cpr_info.rin_per_id
    AND art_alert = 'AL02' 
    AND art_inactive_on IS NULL)
WHEN MATCHED THEN  
UPDATE SET vws_art_alert.art_inactive_on = vwe_cpr_info.rin_date_unreg;

最佳答案

您需要“using”子句的别名。试试这个:

MERGE INTO vws_art_alert 
USING (
   SELECT rin_date_unreg, rin_per_id
   FROM vwe_cpr_info
   WHERE rin_date_unreg >= '27-SEP-11'
   AND rin_date_unreg <= '13-JAN-12') t
ON (vws_art_alert.art_per_id = vwe_cpr_info.rin_per_id
    AND art_alert = 'AL02' 
    AND art_inactive_on IS NULL)
WHEN MATCHED THEN  
UPDATE SET vws_art_alert.art_inactive_on = t.rin_date_unreg;

关于sql - 这个合并语句有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12409861/

相关文章:

sql - 在全局临时表中加载数据

sql - 在pyspark中实现MERGE INTO sql

oracle - if (select count(column) from table) > 0 then

sql - 如何在 Oracle 10g 中解析相邻列表?

r - 根据确切的行/列名称插入矩阵值

python - 将稀疏数据帧转换为密集数据帧

php - MySQL 计算相同的字符串

sql - 同一张表上 SQL 中的关系

sql - PostgreSQL 中最大值的多项选择

mysql - sql计算从今天开始的日期和持续时间