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