2011-11-30 4 views
0

나는 쿼리SQL 쿼리

SELECT A.NUM_RIF, B.NDG, D.NDG FROM ICGR1100 A 
LEFT JOIN (ICGR1105 E INNER JOIN ICGR1101 D ON E.C_IST=D.C_IST AND E.DT_DOM_NDG=D.DT_DOM_NDG AND E.N_DOM=D.N_DOM) ON A.C_IST=E.C_IST AND A.NUM_RIF=E.NUM_RIF 
LEFT JOIN ICGR1103 B ON A.C_IST=B.C_IST AND A.NUM_RIF=B.NUM_RIF 

결과가된다

동일한 필드 값을 갖는 몇 테이블 만이 개 테이블에서 검색 쿼리,이 : 그래서

NUM_RIF   NDG    NDG    
---------------- ---------------- ---------------- 
0000000000000981 (null)   0000000000002490 
0000000000000985 (null)   0000000000002490 
0000009000004523 0000000000001775 (null)     
0000009000004521 0000000000001775 (null)   
0000009000004218 0000000000001775 (null)   
0000000000000980 (null)   (null)   
0000009000004914     0000000000002490 
0000009000004917      
0000009000004923     0000000000002490 

을 내 기대 결과는 다음과 같습니다 :

NUM_RIF   NDG       
---------------- ---------------- 
0000000000000981 0000000000002490 
0000000000000985 0000000000002490 
0000009000004523 0000000000001775     
0000009000004521 0000000000001775   
0000009000004218 0000000000001775   
0000000000000980 (null)     
0000009000004914 0000000000002490 
0000009000004914 
0000009000004923 0000000000002490 

두 경우 모두 필드가 비어있는 값 또는 null이 있거나 둘 중 하나가 비어 있거나 null 일 수 있지만 두 필드 모두 값이 하나만있는 필드는 값이 하나뿐입니다.

+0

두 열 모두 같은 행에 값을 가질 수 있습니까? –

+0

NDG의 기껏해야 하나의 가치가 있다는 것이 언제나 사실입니까? – Fildor

+0

'NUM_RIF = 0000009000004914' 인'NDG'의 값은 무엇입니까? 귀하의 예제에서 열은 공백이지만 위의 것은'(null) '이라고 입력했습니다. 예 : 0 = 길이 문자열입니까? 또한 특정 SQL 제품을 염두에두고 있습니까? (Apache라는 이름으로 mySQL을 추측 할 수 있습니다.) – onedaywhen

답변

1

대부분의 DBMS 기능과 같은 NVL을 가지고 있지 그렇지 않은 경우는 null 경우

NVL(B.NDG, D.NDG) as NDG 

이 D.NDG을 B.NDG를 반환합니다

NVL는 오라클입니다 만 아마 거기 귀하의 dbms에 해당하는 것

+0

또는'Coalesce (B.NDG, D.NDG) as NDG'도 정상적으로 작동합니다. 그러나이 로직은 문제가 있습니다. 첫 번째 매개 변수 인'b.ndg'가 null이면'd.ndg' 만 사용합니다. 따라서 첫 번째 매개 변수를 현명하게 선택하십시오. –

+0

@NaveenBabu, 네, NVL에 해당하는 SQL 서버라고 생각합니다. –

+0

@NaveenBabu : 'COALESCE()'는 SQL Server에서 실제로 구현 된 표준 SQL과 동일합니다. SQL Server는 또한 약간 다른 의미를 가진 독점적 인'ISNULL()'함수를 가지고 있습니다. – onedaywhen

1

시도해 보셨습니까

SELECT A.NUM_RIF, COALESCE(B.NDG, D.NDG) FROM ICGR1100 A 
...