
OK... doing some serious report hacking... and I decided I wanted to
do this:

select acct_id, 
   sum(case when recd > ('now'::date - '30 days'::timespan)::date 
            then amt else 0) as current 
   from payable where not paid_p group by acct_id order by acct_id;

but pgsql gives me:

ERROR:  parser: parse error at or near ")"

Now... I also thought I might be able to contruct 
sum(amt * <boolean>), but this also isn't allowed.  I think that we
should make an int(boolean) function.

Dave.

-- 
============================================================================
|David Gilbert, Velocet Communications.       | Two things can only be     |
|Mail:       dgilbert@velocet.net             |  equal if and only if they |
|http://www.velocet.net/~dgilbert             |   are precisely opposite.  |
=========================================================GLO================

Thu, 30 Sep 1999 09:17:25 -0400 (EDT)
David Gilbert <dgilbert@velocet.ca>
None
David Gilbert <dgilbert@velocet.ca> writes:
> select acct_id, 
>    sum(case when recd > ('now'::date - '30 days'::timespan)::date 
>             then amt else 0) as current 
>    from payable where not paid_p group by acct_id order by acct_id;
> but pgsql gives me:
> ERROR:  parser: parse error at or near ")"

The case construct has to be terminated with an "end" keyword;
"... else 0 end)" ought to work.

> Now... I also thought I might be able to contruct 
> sum(amt * <boolean>), but this also isn't allowed.  I think that we
> should make an int(boolean) function.

That's been suggested before, and I agree.

			regards, tom lane

Thu, 30 Sep 1999 09:33:09 -0400
Tom Lane <tgl@sss.pgh.pa.us>
None