다음을 수행하기 위해 postgresql 쿼리를 작성하려고합니다.
if(field1 > 0, field2 / field1 , 0)
이 쿼리를 시도했지만 작동하지 않습니다.
if (field1 > 0)
then return field2 / field1 as field3
else return 0 as field3
감사합니다
다음을 수행하기 위해 postgresql 쿼리를 작성하려고합니다.
if(field1 > 0, field2 / field1 , 0)
이 쿼리를 시도했지만 작동하지 않습니다.
if (field1 > 0)
then return field2 / field1 as field3
else return 0 as field3
감사합니다
답변:
여기 PostgreSQL 문서에 명시된 바와 같이 :
SQL CASE 표현식은 다른 프로그래밍 언어의 if / else 문과 유사한 일반 조건식입니다.
귀하의 질문에 구체적으로 대답하는 코드 스 니펫 :
SELECT field1, field2,
CASE
WHEN field1>0 THEN field2/field1
ELSE 0
END
AS field3
FROM test
SELECT
문 내에서 사용할 수있는 조건문 중 하나는 여기CASE
에 설명되어 있습니다 .
AS
명령은 필요하지 않습니다. 이 작업을 수행 할 수 있습니다END field3
case when field1>0 then field2/field1 else 0 end as field3
일반적으로 대안 case when ...
은 coalesce(nullif(x,bad_value),y)
(OP의 경우 사용할 수 없음)입니다. 예를 들면
select coalesce(nullif(y,''),x), coalesce(nullif(x,''),y), *
from ( (select 'abc' as x, '' as y)
union all (select 'def' as x, 'ghi' as y)
union all (select '' as x, 'jkl' as y)
union all (select null as x, 'mno' as y)
union all (select 'pqr' as x, null as y)
) q
제공합니다 :
coalesce | coalesce | x | y
----------+----------+-----+-----
abc | abc | abc |
ghi | def | def | ghi
jkl | jkl | | jkl
mno | mno | | mno
pqr | pqr | pqr |
(5 rows)
case when
이 법안에 맞는