2014-09-12 2 views
0

이 코드를 실행할 때 "ORA-00933: SQL command not properly ended"오류 메시지가 나타납니다. 쉼표, 괄호 등을 확인했는데이 점이 잘못되었다는 것을 알 수 없습니다. 어떤 제안? 내 코드에서 UNION ALL을 사용한 것은 이번이 처음입니다. 노조의 첫 번째 부분은 내가 원하는 것을 정확하게합니다. 노동 조합의 두 번째 부분은 2014 회계 연도와 회계 기간 11에 대해서만 두 필드 만 추가했기 때문에 두 번째 부분을 추가했습니다. 나는 첫번째 부분에서 그것을 원한다고하더라도이 부분에서 회계 기간 10에 해당 정보를 원하지 않습니다. 도움을 주셔서 감사합니다UNION/ORA-00933 : SQL 명령이 제대로 종료되지 않았습니다.

Select 
    Bus_UNIT, 
    DESCRIPT, 
    DEPTID, 
    ASSET_NO, 
    ACCT_AD, 
    BOOK, 
    CURRENT_AMT, 
    PRIOR_AMT, 
    ACCT_DE, 
    JRNL_ID, 
    JRNL_DT  
From (SELECT 
    pa.BUSINESS_UNIT as BUS_UNIT, 
    pa.DESCR AS DESCRIPT, 
    pdr.DEPTID AS DEPTID, 
    pdr.ASSET_ID AS ASSET_NO, 
    pdr.ACCOUNT_AD AS ACCT_AD, 
    pdr.BOOK AS BOOK, 

    MAX(CASE WHEN (pdr.FISCAL_YEAR =2014 AND pdr.ACCOUNTING_PERIOD =11) THEN pdr.DEPR END) as CURRENT_AMT, 
    MAX(CASE WHEN (pdr.FISCAL_YEAR =2104 AND pdr.ACCOUNTING_PERIOD =10) THEN pdr.DEPR END) as PRIOR_AMT, 

    '' AS ACCT_DE, 
    '' AS JRNL_ID, 
    '' AS JRNL_DT 

    FROM PS_ASSET pa 

    INNER JOIN PS_DEPR_RPT pdr 
    ON pa.ASSET_ID = pdr.ASSET_ID 
    AND pa.BUSINESS_UNIT = pdr.BUSINESS_UNIT 

    WHERE 
    pa.BUSINESS_UNIT='A0465' 
    AND pdr.BOOK='PERFORM' 
    AND ((pdr.FISCAL_YEAR=2014 AND pdr.ACCOUNTING_PERIOD=11) 
    OR (pdr.FISCAL_YEAR=2014 AND pdr.ACCOUNTING_PERIOD=10)) 

    group by 
    pa.business_unit, 
    pa.descr, 
    pdr.deptid, 
    pdr.asset_id, 
    pdr.account_ad, 
    pdr.book 

UNION ALL 

    select 
    '' as BUS_UNT, 
    '' AS DESCRIPT, 
    '' AS DEPTID, 
    '' AS ACCT_AD, 
    '' AS BOOK, 
    '' AS CURRENT_AMT, 
    '' AS PRIOR_AMT, 
    pdl.asset_id AS ASSET_NO, 
    pdl.account AS ACCT_DE, 
    pdl.journal_id AS JRNL_ID, 
    pdl.journal_date AS JRNL_DT 

    from ps_dist_ln pdl 

    where 
    book = 'PERFORM' 
    and business_unit = 'A0465' 
    and fiscal_year = 2014 
    and accounting_period = 11 
    and distribution_type = 'DE' 
) as TEST  
group BY ASSET_NO; 

답변

0

오라클은 테이블 별칭에 as을 허용하지 않습니다. as을 삭제하면됩니다.

as은 열 별칭에는 선택 사항이지만 적극 권장됩니다.

+0

대단히 감사합니다. 내가 그것을 제거하고 이제 다음과 같은 오류 메시지가 나타납니다 : ORA-01790 : 표현식은 해당 표현식과 동일한 데이터 유형을 가져야합니다. 이 줄은 첫 번째 Max (case ....) 문을 참조합니다. 어떤 제안? 당신의 도움을 주셔서 감사합니다. – Shaves

+0

@Shaves. . . 'union'의 두 부분에서 하나씩 열을 제거하십시오. 어떤 컬럼에 문제가 있는지 알았다면, 아마도'cast()'를 사용하여 문제를 해결하십시오. –

+0

감사합니다 ...... 그 무리를 도왔고 그 문제를 바로 잡을 수있었습니다. – Shaves

관련 문제