簡體   English   中英

IBM DB2:具有多個聯接的SQL查詢

[英]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_001ICMADMIN.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM