2010-05-26 4 views
10

저는 PostgreSQL 데이터베이스를 사용하고 있습니다. 일부 측정을 나타내는 테이블에는 측정 및 보간이라는 두 개의 열이 있습니다. 처음에는 관측 (측정)이 있었고, 두 번째는 가까운 값에 따라 보간 된 값이었습니다. 원래 값을 가진 모든 레코드는 보간 값을가집니다. 그러나 "원래"관찰 (NULL)이없는 많은 레코드가 있으므로 값이 보간되어 두 번째 열에 저장됩니다. 그래서 기본적으로 데이터베이스의 두 경우가있다 : 물론SQL 한 필드의 값에 따라 두 필드 사이를 선택하십시오.

Value Value 
NULL Value 

은, 따라서 내가 첫 번째 열에서 데이터를 선택하는 쿼리를 작성하는 데 사용할 필요가있는 경우 첫 번째 열에서 값을 사용하는 것이 바람직하다 , 사용할 수 없으면 (NULL), 데이터베이스는 해당 레코드의 두 번째 열에서 값을 반환합니다. SQL 쿼리를 작성하는 방법을 모르겠습니다.

도와주세요. 감사.

답변

27

당신은 Coalesce를 사용할 수 있습니다

COALESCE 기능은 null이 아닌 인수의 첫 번째 반환합니다. 모든 인수가 널인 경우에만 Null이 리턴됩니다. 그것은 그렇지 않으면 NULL, second_value없는 경우

Select Coalesce(first_value, second_value) 
From your_table 

first_value을 반환합니다.

+0

첫 번째 값이 null 인 경우 세 번째 값을 원하면 어떻게해야합니까 ?? – Joe

+1

'COALESCE (first_value, second_value, third_value)'와 같은 뜻입니까? 첫 번째 값과 두 번째 값이 모두 'NULL'이면 'third_value'를 반환합니다. –

+0

감사하지만 첫 번째 값이 null 인 경우에만 세 번째 값을 원합니다. 나는 내가 원했던 것을 얻기 위해 2 개의 UNION을 선택했다. 첫 번째 select는 firstvalue가 null이 아닌 모든 레코드를 가지며 두 번째 select는 첫 번째 값이 null이고 v.Name을 FirstName으로, CONVERT (varchar (10), h.ID, 108) LastName으로 처리합니다. – Joe

8

피터가 찍었습니다. 그러나 귀하의 질문의 제목이 귀하의 특정 문제보다 더 일반적이므로 conditional expressionsPostgresql (및 다른 여러 데이터베이스)에서 사용할 수있는 문서는 CASE, COALESCE, NULLIF, GREATEST, LEAST입니다. 첫 번째 것이 가장 일반적입니다.

관련 문제