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;
대단히 감사합니다. 내가 그것을 제거하고 이제 다음과 같은 오류 메시지가 나타납니다 : ORA-01790 : 표현식은 해당 표현식과 동일한 데이터 유형을 가져야합니다. 이 줄은 첫 번째 Max (case ....) 문을 참조합니다. 어떤 제안? 당신의 도움을 주셔서 감사합니다. – Shaves
@Shaves. . . 'union'의 두 부분에서 하나씩 열을 제거하십시오. 어떤 컬럼에 문제가 있는지 알았다면, 아마도'cast()'를 사용하여 문제를 해결하십시오. –
감사합니다 ...... 그 무리를 도왔고 그 문제를 바로 잡을 수있었습니다. – Shaves