Обсуждение: ...

Поиск
Список
Период
Сортировка

...

От
David Gilbert
Дата:
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================


...

От
Tom Lane
Дата:
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