Re: CASE - Mailing list pgsql-sql

From Rod Taylor
Subject Re: CASE
Date
Msg-id 1053386689.24151.49.camel@jester
Whole thread Raw
In response to CASE  ("James Taylor" <jtx@hatesville.com>)
List pgsql-sql
On Mon, 2003-05-19 at 02:59, James Taylor wrote:
> Hi everyone, I'm trying to figure out how to get CASE working in a sum
> aggregate function.  Pretty simple query:
>
> select sum(numbers) from lists where uid=1;
>
> It's possible that there may be 0 rows where uid == 1.  Instead of
> returning 1 blank row, I want it to return '0'.  So, I tried this:
>
> select case(sum(numbers)) when null then 0 else sum(numbers) end from
> list_results;

Use Coalesce:

SELECT coalesce(sum(numbers), 0) FROM lists WHERE uid = 1;

To use case, efficiently, if you really want:

SELECT CASE WHEN sum_numbers IS NULL THEN 0           ELSE sum_numbers      END AS sum_numbers FROM (SELECT
sum(numbers)AS sum_numbers         FROM lists        WHERE uid = 1      ) as tab; 


--
Rod Taylor <rbt@rbt.ca>

PGP Key: http://www.rbt.ca/rbtpub.asc

pgsql-sql by date:

Previous
From: Stephan Szabo
Date:
Subject: Re: CASE
Next
From: Manfred Koizar
Date:
Subject: Re: CASE