2016-04-05 62 views
-2
SELECT CU.CUST_CODE 
FROM AR_CUSTOMERS CU 
WHERE CU.CUST_CODE=TM.CUST_CODE 
UNION 
SELECT ITS.ITEMS_CODE 
FROM AR_ITEMS ITS 
WHERE ITS.ITEMS_CODE = TD.ITEM_CODE 
UNION 
SELECT ITS.ITEMS_NAME 
FROM AR_ITEMS ITS 
WHERE TM.INVOICE_NO = TD.INVOICE_NO AND ITS.ITEMS_CODE = TD.ITEM_CODE 
UNION 
SELECT TO_CHAR(TM.JOB_DATE,'MON-YY')MON, TO_CHAR(TM.JOB_DATE,'MM-YY')MM 
FROM AR_TRANS_MASTER TM 
SELECT SUM(TD.QUANTITY)QUANTITY, SUM(TD.PRICE)UNIT 
FROM AR_TRANS_DETAIL TD 
WHERE ITS.ITEMS_CODE = TD.ITEM_CODE 
TM.JOB_DATE :STARTDATE AND :STOPDATE 
GROUP BY 
CU.CUST_CODE,ITS.ITEMS_CODE,ITS.ITEMS_NAME,TO_CHAR(TM.JOB_DATE,'MON-YY'),TO_CHAR(TM.JOB_DATE,'MM-YY') 
ORDER BY 
MM ASC 

讓我知道什麼是錯誤是這樣,任何人都可以解釋或糾正什麼是這個錯誤:ORA-00933:SQL命令不能正確地結束

  • 00000 - 「SQL命令不能正確地結束」
    *原因:
    *動作:
    行錯誤:15列:1
  • MADE,現在存在的誤差(聯合)的該修正後:

    ORA-00904: 「TM」 「CUST_CODE」:無效的標識符 00904. 00000 - 「%S:無效識別符」 * 原因:
    *動作: 行錯誤:3欄:22

    如何找到這個

    +0

    作爲錯誤消息意味着,'FROM之後有一個缺少分號第14行的AR_TRANS_MASTER TM' – dnoeth

    +1

    您不能使用不同列數的unnion查詢。 – Mihai

    回答

    0

    它看起來像你錯過了這些線之間的「聯盟」(或任何其他預期運營商):

    FROM AR_TRANS_MASTER TM 
    SELECT SUM(TD.QUANTITY)QUANTITY, SUM(TD.PRICE)UNIT 
    

    你可能打算:

    SELECT CU.CUST_CODE 
    FROM AR_CUSTOMERS CU 
    WHERE CU.CUST_CODE=TM.CUST_CODE 
    UNION 
    SELECT ITS.ITEMS_CODE 
    FROM AR_ITEMS ITS 
    WHERE ITS.ITEMS_CODE = TD.ITEM_CODE 
    UNION 
    SELECT ITS.ITEMS_NAME 
    FROM AR_ITEMS ITS 
    WHERE TM.INVOICE_NO = TD.INVOICE_NO AND ITS.ITEMS_CODE = TD.ITEM_CODE 
    UNION 
    SELECT TO_CHAR(TM.JOB_DATE,'MON-YY')MON, TO_CHAR(TM.JOB_DATE,'MM-YY')MM 
    FROM AR_TRANS_MASTER TM 
    UNION 
    SELECT SUM(TD.QUANTITY)QUANTITY, SUM(TD.PRICE)UNIT 
    FROM AR_TRANS_DETAIL TD 
    WHERE ITS.ITEMS_CODE = TD.ITEM_CODE 
    TM.JOB_DATE :STARTDATE AND :STOPDATE 
    GROUP BY 
    CU.CUST_CODE,ITS.ITEMS_CODE,ITS.ITEMS_NAME,TO_CHAR(TM.JOB_DATE,'MON-YY'),TO_CHAR(TM.JOB_DATE,'MM-YY') 
    ORDER BY 
    MM ASC 
    
    1

    也許,第15行缺少UNION

    SELECT CU.CUST_CODE 
    FROM AR_CUSTOMERS CU 
    WHERE CU.CUST_CODE=TM.CUST_CODE 
    UNION 
    SELECT ITS.ITEMS_CODE 
    FROM AR_ITEMS ITS 
    WHERE ITS.ITEMS_CODE = TD.ITEM_CODE 
    UNION 
    SELECT ITS.ITEMS_NAME 
    FROM AR_ITEMS ITS 
    WHERE TM.INVOICE_NO = TD.INVOICE_NO AND ITS.ITEMS_CODE = TD.ITEM_CODE 
    UNION 
    SELECT TO_CHAR(TM.JOB_DATE,'MON-YY')MON, TO_CHAR(TM.JOB_DATE,'MM-YY')MM 
    FROM AR_TRANS_MASTER TM 
    UNION 
    SELECT SUM(TD.QUANTITY)QUANTITY, SUM(TD.PRICE)UNIT 
    FROM AR_TRANS_DETAIL TD 
    WHERE ITS.ITEMS_CODE = TD.ITEM_CODE 
    TM.JOB_DATE :STARTDATE AND :STOPDATE 
    GROUP BY 
    CU.CUST_CODE,ITS.ITEMS_CODE,ITS.ITEMS_NAME,TO_CHAR(TM.JOB_DATE,'MON- YY'),TO_CHAR(TM.JOB_DATE,'MM-YY') 
    ORDER BY 
    MM ASC 
    
    0

    我想你在工會的情況下,你不能在一個查詢中使用引用名稱。
    實施例

    select a.col1 from tab1 a where a.col1=b.col2 
        union 
        select b.col2 from tab2 b; 
    

    b爲一個表的查詢2參考,我認爲它不能在查詢1可以使用請不要檢查

    相關問題