你可以帮我解决合并查询的错误吗? 查询:
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"
我尝试过多种可能的方法,但问题仍然存在。
答案 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;
不确定是不是修复。