2013-12-17 3 views
0

반환 된 데이터에 대한 SQL 문을 검사하는 보고서를 만들고 결과 집합에 따라 Y/N 중 하나로 열을 채 웁니다.Oracle - 행이 반환되지 않았거나 값이 삽입되지 않았습니다.

나는 NVL 기능을 사용하려고했지만이 기능의 요점을 완전히 놓치고 있다고 생각합니다. 아래의 쿼리는 아무런 결과도 반환하지 않으므로 'null 값'이 없습니다. NVL 함수는 내 경우에는 작동하지 않습니다 - 나는 COALESCE를 시도했지만 임베디드 SELECT 주위에 머리를 가져 와서 더미 'DUAL'테이블을 호출 할 수는 없습니다.

'행이 반환되지 않았습니다'의 경우 값을 제공하기 위해 사용할 수있는 방법이 있습니까?

SELECT 
TO_CHAR(AR_WD_EVENTS.EVENT_ID) 
FROM 
AR_WD_EVENTS, AR_PI_SITE_BLOCKS 
WHERE AR_WD_EVENTS.EVENT_BLOCK_ID = {!AR_PI_SITE_BLOCKS.SITE_ID} 
AND TO_CHAR(AR_WD_EVENTS.EVENT_CONTRACT_ID) = 1555 

이것은 QB 구문 - '6입니다. Shutters - Event '는 위의 SQL 쿼리의 이름입니다. 기본적으로'이벤트 ID '를 찾지 못하면 NULL/Zero/NA의 값을 제공하는 SQL 문에서 해당'이벤트 ID '를 반환합니다. 그래서 아래의 QBF 문에서 사용할 수 있습니다 - SQL 쿼리는 정상적으로 작동하지만 리턴 값이있을 때만 유효합니다.

SELECT 
MAX(TO_CHAR(AR_WD_EVENTS.EVENT_ID)) 
FROM 
AR_WD_EVENTS, AR_PI_SITE_BLOCKS 
WHERE AR_WD_EVENTS.EVENT_BLOCK_ID = {!AR_PI_SITE_BLOCKS.SITE_ID} 
AND TO_CHAR(AR_WD_EVENTS.EVENT_CONTRACT_ID) = 1555 

MAX 기능 Null 때를 반환합니다 : 당신은 항상 하나 (하나의 이벤트 ID) 중 하나를 얻을 것이다 경우

$QBFvalue = 'Y'; 

if ({%6. Shutters - Event} = 'N/A') $QBFvalue = 'N'; 

return $QBFvalue; 

많은 감사

답변

1

제로 결과, 당신은 MAX 기능을 사용할 수 있습니다 일치하는 행이없고 일치하는 행이 하나있을 때 EVENT_ID을 반환합니다.

+0

카운트/맥스 솔루션은 어떤면에서 작동합니다. 즉, 작업을 완료하지만 SQL 문 결과를 호출하여 보고서를 채울 수 있기를 원합니다.이 경우 카운트/나도 Y/N 값을 찾았고, 내가 할 수 있기를 원하는 것은 그 값이 무엇인지 보여 주며, 최대/카운트 함수를 사용하면 이것이 허용되지 않을 것이고, 따라서 NVL/2와 COALESCE 함수 - – cstones88

+0

MAX()가 발견 된 값을 반환하지만이 값을 표시 할 수 있지만 입력 해 주셔서 감사합니다. 유일한 제한은 하나의 값만이 반환 값 (가장 높은 값)이 될 수 있지만 주어진 EVENT_CONTRACT_ID가 단일 EVENT_ID에만 연결될 수있는 경우에는 문제가되지 않습니다. 당신이 관련된 테이블의 구조를 보여주지 않았으므로 이것은 분명하지 않습니다. –