Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Basic sql

Re: Basic sql

From: Stephane Faroult <sfaroult_at_roughsea.com>
Date: Tue, 09 Nov 2004 22:24:57 +0100
Message-ID: <419135A9.8010108@roughsea.com>


Your use of case is rather unorthodox.

select count(*)
from a
where (op_year, unit_id, 1 + floor(extract(month from a.op_date)/4))

    in (select op_year, unit_id, qtr

          from b)

Avoid using EXISTS when you have no selective condition besides.           

Stephens, Chris wrote:

>Well I've had my coffee and I still can't get this to work:
>
>SELECT COUNT(*) FROM a
> WHERE EXISTS (SELECT *=20
> FROM b
> WHERE a.unit_id =3D b.unit_id
> and a.op_year =3D b.op_year
> and extract(month from a.op_date) BETWEEN CASE
> WHEN b.qtr =3D 1 THEN 1 AND 3
> WHEN b.qtr =3D 2 THEN 4 AND 6
> WHEN b.qtr =3D 3 THEN7 AND 9
> WHEN b.qtr =3D 4 THEN 10 AND 12
> END)
>/
>
>I've tried several variations of this (all that I can think of)i.e.
>quotes and parenthesis in all kinds of places, case to build entire last
>filter instead of just the '1 and 3' pieces. and it always returns:
>
>ERROR at line 7:
>ORA-00905: missing keyword
>
>9.2 on windows
>
>What simple thing am I missing now?
>
>Thank you for the extra eyes!
>--
>http://www.freelists.org/webpage/oracle-l
>
>
>

-- 
Regards,

Stephane Faroult

RoughSea Ltd
http://www.roughsea.com

--
http://www.freelists.org/webpage/oracle-l
Received on Tue Nov 09 2004 - 15:18:38 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US