Need help with embedded CASEs

From: Denis Bucher <dbucher(at)niftycom(dot)com>
To: PGSQL-SQL <pgsql-sql(at)postgresql(dot)org>
Subject: Need help with embedded CASEs
Date: 2001-11-07 15:58:31
Message-ID: 5.1.0.14.0.20011107164717.03153940@mail.niftycom.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql


Hello !

I came across a very hard SELECT and Postgres refuses it. If someone could
help me it would be great !

Here is a simplified version of the problem that I have :

SELECT CASE WHEN '2001-11-07' = current_date THEN 't' ELSE 'f' END AS
flag_today, CASE WHEN flag_today THEN current_time ELSE '00:00' END AS
time_iftoday;

Why doesn't it work ? Or how could I use the result of the CASE in another ?

Thanks a lot for any help !

Denis Bucher
NiftyCom

P.S. The real request, for fun, is :
SELECT sc.datetime_deliver, SUM( CASE WHEN sc.type_cmd=1 AND b.b='TRUE'
THEN sl.number_main WHEN sc.type_cmd=4 AND b.b='TRUE' AND
true_nb_shop=sc.nb_shop_main THEN sl.number_main ELSE '0' END ) AS
sum_nb_entre, CASE WHEN sc.type_cmd=1 AND b.b='TRUE' THEN sc.nb_shop_main
WHEN sc.type_cmd=3 AND b.b='TRUE' THEN sc.nb_shop_other WHEN sc.type_cmd=4
AND b.b='TRUE' THEN sc.nb_shop_main WHEN sc.type_cmd=4 AND b.b='FALSE' THEN
sc.nb_shop_other ELSE '0' END AS true_nb_shop, SUM( CASE WHEN sc.type_cmd=3
AND b.b='TRUE' THEN sl.number_other+sl.number_trash+sl.number_eaten WHEN
sc.type_cmd=4 AND b.b='FALSE' THEN sl.number_other ELSE '0' END ) AS
sum_nb_sorti FROM stock_cmd sc, stock_lig sl, (SELECT boolean 'TRUE' AS b
UNION SELECT 'FALSE') as b WHERE sc.datetime_deliver BETWEEN '2001-01-01
11:00:00' AND '2002-01-01 12:00:00' AND sc.type_cmd<>2 AND sl.id_cmd=sc.id
AND (sc.type_cmd=4 OR b.b='TRUE') GROUP BY sc.datetime_deliver, true_nb_shop

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Nick Fankhauser 2001-11-07 16:16:38 RIGHT JOIN is only supported with mergejoinable join conditions
Previous Message Karel Zak 2001-11-07 14:48:02 Re: Postgres+ISO8859-8 support?