[英]IBM DB2: SQL query with multiple Join
我需要使用一些查詢遷移一系列腳本,這些查詢在多個表上執行大量聯接,以獲取注冊表的值。
不幸的是,由於出現sql錯誤,我無法處理這些查詢:
SQL0203N對“ INDEX_NOREL”列的引用是不明確的。
使用的數據庫是IBM DB2,讓我感到困惑的是客戶端確認查詢應該可以工作。
有誰知道我可以如何修改此查詢以使其正常工作?
我正在做一些測試,但是我不知道DB2,而且我對SQL也不是很有經驗。 我知道該列是不明確的(在每個表中都有相同的名稱),但是如果我嘗試重命名該列,則會得到錯誤的上下文錯誤...
這是查詢:
SELECT
(CASE WHEN A.INDEX_FATT = 0 THEN A.INDEX_CL ELSE COALESCE(B.INDEX_CL, 0) END) AS INDCLI,
(CASE WHEN A.INDEX_FATT = 0 THEN A.INDEX_AP ELSE COALESCE(B.INDEX_AP, 0) END) AS INDP,
IND_NM002, IND_NM001, IND_DT001
FROM ICMADMIN.table_001 A
INNER JOIN ICMADMIN.table_002 ON INDEX_NOREL = A.INDEX_NOREL
LEFT OUTER JOIN ICMADMIN.table_001 B ON B.VT2CTO_NOCTO = A.INDEX_FATT
WHERE A.INDEX_NO=31 WITH UR FOR FETCH ONLY;
該問題可能是由於以下條款引起的:
INNER JOIN ICMADMIN.table_002 ON INDEX_NOREL = A.INDEX_NOREL
這里左側的INDEX_NOREL
沒有任何表別名。 由於ICMADMIN.table_001
和ICMADMIN.table_002
都具有名為INDEX_NOREL
的列,所以這就是您面臨此問題的原因。 只需為ICMADMIN.table_002
創建一個別名,並在INDEX_NOREL
加上該別名即可使用。
FROM ICMADMIN.table_001 A
INNER JOIN ICMADMIN.table_002 C ON C.INDEX_NOREL = A.INDEX_NOREL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.