2014-01-20 5 views
0

다음 쿼리에서 두 개의 사례를 사용하여 대응 결과 & 승인 유형을 얻습니다. Oracle SQL에서 아래 쿼리를 실행하는 동안 daction_1 & 승인 유형 _1 (daction & 승인 유형 열)의 두 개의 새로운 임시 열이 생성됩니다. 자, IDOC 코드에서 이러한 키워드를 사용하고 싶지만 temp 열이 만들어지기 때문에 사용할 수 없습니다. 이 문제를 해결하는 방법?Oracle SQL Case 문에서 키워드로 끝내기

SELECT WH.dActionDate, 
    WH.xWF_SendTo, 
    WH.dAction, 
    ATY.ApprovalType, 
    WH.xWorkflowComments, 
    CASE 
    WHEN NVL(ApprovalType,'') IS NULL 
    THEN xPurposeForRejection 
    ELSE ApprovalType 
    END AS ApprovalType, 
    CASE 
    WHEN NVL(dAction,'')  ='SendTo' 
    AND NVL(ApprovalType,'') IS NOT NULL 
    OR NVL(dAction,'')  ='Approve' 
    THEN 'Approve' 
    ELSE 'Reject' 
    END AS dAction 
FROM WorkflowHistory WH, 
    Reason Re, 
    ApprovalType ATY 
WHERE UPPER(dDocName)  = UPPER('D_1239178') 
AND xPurposeForSubmission = Re.ReasonID(+) 
AND xDocApproval   = ATY.ApprovalTypeID(+) 
AND (dAction    IN('Reject','Approve') 
OR (dAction    ='SendTo' 
AND ApprovalType   IS NOT NULL)) 
AND ROWNUM    <= 5 
ORDER BY dActionDate DESC, 
    dActionMillis 
+3

먼저 IDOC은 무엇을 나타 냅니까? 둘째, MySQL과 Oracle에 대해이 태그를 붙였습니다. 두 분 중 어느 분이 정말로 사용하십니까? 세 번째로, 왜 당신이 이미 선택하고있는 열과 일치하는 별명을 사용하도록'CASE' 문을 앨리어싱하는 것입니까? 왜 두 가지를 구별 할 수있는 고유 한 별칭을 선택하지 않았습니까? –

+1

Oracle에서 빈 문자열은 Null로 처리되므로 Nvl (dAction, '')은 dAction –

답변

0

열 이름을 보면 나는 Idoc 오라클 Webcenter 컨텐트 서버 (이전 오라클 UCM)에서 사용되는 스크립트 언어가 있다고 가정합니다. 직접 실행중인 인스턴스가 있는지 확인할 필요는 없지만 필요한 열이있는 데이터베이스보기를 만든 다음 구성 관리자의 일반 테이블로 볼 수 있습니다. Following link은 구성 프로세스의 몇 가지 세부 사항을 제공합니다. 다른 옵션은 성능이 떨어지지 만 논리를 Idoc 코드 자체로 옮기는 것입니다.

+0

친구와 동일합니다. 나는 오라클에서 일하고있다. IDOC은 또 다른 프로그램입니다. 언어. 주요 문제는 다른 프로그래밍 언어에서 daction 또는 ApprovalType 변수를 사용하는 방법입니다. –