我在Oracle SQL中遇到此查询的问题。
Errore alla riga del comando:18 Colonna:42
报告错误:
Errore SQL:ORA-00918:列模糊定义了 00918. 00000 - "列模糊定义"
*原因:
*操作:
这是查询,但我没有看到明确定义的列:
MERGE INTO T_HPSM_CM_UBIS H USING
(SELECT A.itam_relevant_appl_code as ret,
b.service_id,
b.it_service,
b.itam_user_id,
b.itam_last_name,
b.itam_first_name,
b.itrm_user_id,
b.itam_first_name,
b.itam_last_name
FROM
(SELECT f.itam_relevant_appl_code
FROM T_HPSM_CM_UBIS f
GROUP BY f.itam_relevant_appl_code
) A,
t_cp_list_itam b
WHERE A.itam_relevant_appl_code = b.hvb_appl_code
) s ON (H.itam_relevant_appl_code = s.ret)
WHEN MATCHED THEN
UPDATE SET H.service_id = s.service_id, H.it_service = s.it_service;
答案 0 :(得分:5)
您已在选择列表中选择了两次b.itam_first_name和b.itam_last_name。你的意思是?最后两个应该是itrm而不是itam吗?
SELECT A.itam_relevant_appl_code as ret,
b.service_id,
b.it_service,
b.itam_user_id,
b.itam_last_name, -- 1st occurrence
b.itam_first_name, -- 1st occurrence
b.itrm_user_id,
b.itam_first_name, -- 2nd occurrence
b.itam_last_name -- 2nd occurrence
FROM ...
如果这不是错误,您必须为该列的第二次出现一个别名,以允许Oracle区分这两者。
ETA:更仔细地查看您的查询,您实际上只使用了源查询中的3列:
所以你可以摆脱其他列,因为它们与合并无关。