2013-02-28 1 views
0

이 select를 case 문과 함께 실행하면 위의 오류가 발생합니다. 몇 가지 방법을 시도했지만 올바른 구문을 가져올 수 없습니다.ORA-00936 : 표현식 문이 누락되었습니다.

SELECT m.md_security_id, 
    thv.unit_qty, 
    thv.contract_value_amt, 
    thv.contract_currency_cd, 
    (case when 
    THV.BORROW_LOAN_TYPE_CD = 'B' 
    then select THV.SENDER_ORG_ID as BORROWER_ORG_ID, 
      select THV.RECIPIENT_ORG_ID as LENDER_ORG_ID 
    end), 
    (case when 
    THV.BORROW_LOAN_TYPE_CD = 'L' 
    THEN select THV.RECIPIENT_ORG_ID as BORROWER_ORG_ID, 
      select THV.SENDER_ORG_ID as LENDER_ORG_ID 
    end) 
    FROM eqmddev.txn_header_mv thv, 
    eqmddev.md_security m, 
    eqmddev.security_xref_vw_tbl x 
    WHERE  m.isin = x.security_id 
    AND ThV.SECURITY_MASTER_ID = X.SECURITY_MASTER_ID 
    AND M.EXCHANGE_CD = X.EXCHANGE_CD 
+1

당신이 원하는 것을 더 잘 설명하십시오. 현재 쿼리가 의미가 없습니다. – zerkms

+1

동의합니다. 내가 그것을 편집하고 고치려고 할 때까지 당신이 필요로하는 것을 이해했다고 생각하고, 깨달았습니다. 귀하의 케이스 안에서 선택하는 것이 문제입니다. 내가 아는 한 여러 사례를 반환 할 수 없습니다. –

+1

더 자세히 살펴 보겠습니다. 대소 문자를 완전히 건너 뛰지 말고 다음 열의 lender_org_id에서 borrower_org_id를 반환하십시오. 레이아웃이 현재 상태에서 매우 혼란 스럽습니다. –

답변

1

당신은 다음과 같이 쿼리를 다시 작성해야합니다

SELECT m.md_security_id, 
    thv.unit_qty, 
    thv.contract_value_amt, 
    thv.contract_currency_cd, 
    case 
    when THV.BORROW_LOAN_TYPE_CD = 'B' then THV.SENDER_ORG_ID 
    when THV.BORROW_LOAN_TYPE_CD = 'L' THEN THV.RECIPIENT_ORG_ID 
    end AS BORROWER_ORG_ID, 
    case 
    when THV.BORROW_LOAN_TYPE_CD = 'B' then THV.RECIPIENT_ORG_ID 
    when THV.BORROW_LOAN_TYPE_CD = 'L' THEN THV.SENDER_ORG_ID 
    end AS LENDER_ORG_ID, 
FROM eqmddev.txn_header_mv thv, 
    eqmddev.md_security m, 
    eqmddev.security_xref_vw_tbl x 
WHERE  m.isin = x.security_id 
    AND ThV.SECURITY_MASTER_ID = X.SECURITY_MASTER_ID 
    AND M.EXCHANGE_CD = X.EXCHANGE_CD 

기본적으로, 당신은 CASE 문에서 여러 열을 반환 할 수 없습니다. 단일 열에 대한 조건부 대체물로 취급하십시오. 위의 예에서는 BORROWER_ORG_IDLENDER_ORG_ID 별칭에 동일한 사례 조건을 사용했습니다.

참고로 ELSE 문을 사례에 포함시키는 것도 고려해야합니다. 그렇지 않으면 THV.BORROW_LOAN_TYPE_CDB 또는 L이 아닌 경우 NULL을 얻게됩니다.

+0

Thanks Cha !!!! 완벽하게 작동합니다. ""으로 끝나는 예제를 보았지만 거기에 별칭을 사용한다는 것을 알지 못했습니다. – user2121274