2010-12-27 3 views
1

"빌드하지 않거나 dba가 생각하는 방식"이지만 프로그래머가 접근한다는 것을 알고 있습니다. 어떻게 3 가지 필드에서 하나를 요청하여 null이 아닌 것을 결과로 가져올 수 있습니까? 들.SQL이 하나의 결과로 필드를 통합

의 우리의이 f2,f3,f4이 같은 유형 가정 해 봅시다 f1,f2,f3,f4,f5.

있는 테이블이 있다고 가정 해 봅시다.

의 우리가 다음 첫 번째 튜플을 반환 할 경우 테이블의 내용 지금

(key1,null,null,value1,value2) 
(key2,null,value3,value4,value5) 
(key3,null,null,null,value6) 

의 튜플을 할 수 있다고 가정 해 봅시다 우리 수 (키 1) 우리 수 (키 1, 값 1, 값)

우리가 묻는다면 우리가 KEY3을 요청하는 경우 키 2를 위해 우리는 우리가 얼마나 (key1,null,value6)

을 얻을 (key1,value3,value5)

를 얻는 것이 가능 Y 경우의 우선 순위에서 필드를 얻을 수 f2에 값이 있고, 반환 된 필드에 값이있는 경우에만 f3에 값이 있으면 중간에 반환 된 필드로 설정되고 f4에 값이 있으면 중간에 반환 된 필드로 설정됩니다.

주요 목표는 결과를 단일 필드로 가져 와서 결과 끝에 필요한 오버 헤드 작업을 방지하는 것입니다.

+2

소리가 여기 당신의 친구입니다 –

답변

4

Bernd_k 제안 바와 같이, COALESCE는 coalease는 당신이 필요로하는 기능이있는 것처럼

SELECT [key], COALESCE(f2, f3, f4), f5 
FROM YourTable 
2
Select IsNull(IsNull(f1, f2), f3)) 
관련 문제