oracle sql问题与合并查询

时间:2015-09-15 07:20:36

标签: oracle

你可以帮我解决合并查询的错误吗? 查询:

MERGE INTO TEST_STATUS_REV TB1
USING
(
SELECT
TB2.ITG,'1',TB2.CORP_LOAD_ID,TB2.LVL_CYC,'',TB2.BUS_FUNC,'',COUNT(TB2.status) AS Passed,'','','','',TB2.IMPT_ENG,TB2.VAL_TYP,'',''
FROM test_status_rev_interface@TAA1_PROD TB2
where TB2.status like 'Pass%'
and TB2.lvl_cyc='L3C1'
GROUP BY
        TB2.ITG,
--      TB2.RTS,            
        TB2.CORP_LOAD_ID,
        TB2.LVL_CYC,
--      CONF,
        TB2.BUS_FUNC ,
--      TB2.TC_PLN,
--      TB2.TC_PASSED,
--      TB2.TC_FAILED,
--      TB2.NAV,
--      TB2.PND
--      TB2.COM,
        TB2.IMPT_ENG,
        TB2.VAL_TYP
--      TB2.TC_TOT
--      TB2.FEAT_ID
   ) SRC
ON 
(
TB1.LVL_CYC = SRC.LVL_CYC
)
WHEN MATCHED THEN UPDATE SET TB1.TC_PASSED = SRC.STATUS;

错误:

Error report:
SQL Error: ORA-00918: column ambiguously defined
00918. 00000 -  "column ambiguously defined"

我尝试过多种可能的方法,但问题仍然存在。

2 个答案:

答案 0 :(得分:1)

我现在无法在pl / sql dev上检查它,但我会责怪源查询语句。你需要列出所有的''或者' 1'列以便稍后在' WHEN'条款! 请尝试告诉我们是否有效:) 编辑:应该是:

TB2.ITG,' 1'作为a,TB2.CORP_LOAD_ID,TB2.LVL_CYC,'' as b,TB2.BUS_FUNC,''如c,COUNT(TB2.status)AS已通过,''作为d,''作为e,''作为f,''如g,TB2.IMPT_ENG,TB2.VAL_TYP,''作为h,''我是

答案 1 :(得分:0)

您在SET子句中不需要表别名。那应该是:

WHEN MATCHED THEN UPDATE SET TC_PASSED = SRC.STATUS;

不确定是不是修复。