2016-04-05 64 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可以使用请不要检查

    相关问题