Chris, I think I goofed in the month-to-quarter conversion :(. It would probably be better (and more understandable) to use to_number(to_char(a.op_date, 'Q')) to get the quarter. Regards, Stephane Faroult RoughSea Ltd http://www.roughsea.com On Tue, 9 Nov 2004 17:03 , 'Stephens, Chris' <ChrisStephens@xxxxxxx> sent: thanks! Except now I'm worried about the accuracy: 1 select count(*) 2 from a 3 where (op_year, unit_id, 1 + floor(extract(month from a.op_date)/4)) 4 in (select b.year, unit_id, qtr 5 from b 6* where b.batch_table =3D 'UNT_HRLY') SQL> / COUNT(*) ---------- 38210 Elapsed: 00:00:01.03 SQL> ed Wrote file afiedt.buf 1 SELECT COUNT(*) FROM a 2 WHERE EXISTS (SELECT * 3 FROM b 4 WHERE b.batch_table=3D'UNT_HRLY' 5 and a.unit_id =3D b.unit_id 6 and a.op_year =3D b.year 7* and extract(month from a.op_date) BETWEEN (3*b.qtr - 2) and 3*b.qtr ) 8 / COUNT(*) ---------- 40762 Elapsed: 00:01:09.01 ....none of the columns have NULL values after I filter table b on batch_table so I know there's nothing funky there. I'm going to look at it some more but I don't see why the different row counts? -----Original Message----- From: oracle-l-bounce@xxxxxxxxxxxxx[1] [oracle-l-bounce@xxxxxxxxxxxxx[2]','','','')">oracle-l -bounce@xxxxxxxxxxxxx[3][]On Behalf Of Arnon, Yuval Sent: Tuesday, November 09, 2004 4:43 PM To: oracle-l@xxxxxxxxxxxxx[4] Subject: RE: Basic sql You can try this if you still want to use the case statement SELECT COUNT(*) FROM a WHERE EXISTS (SELECT *=3D3D20 FROM b WHERE a.unit_id =3D3D b.unit_id and a.op_year =3D3D b.op_year and extract(month from a.op_date) BETWEEN CASE WHEN b.qtr =3D3D 1 THEN 1 WHEN b.qtr =3D3D 2 THEN 4=3D20 WHEN b.qtr =3D3D 3 THEN 7=3D20 WHEN b.qtr =3D3D 4 THEN 10=3D20 END AND CASE WHEN b.qtr =3D3D 1 THEN 3 WHEN b.qtr =3D3D 2 THEN 6 WHEN b.qtr =3D3D 3 THEN 9 WHEN b.qtr =3D3D 4 THEN 12 END) / Yuval. -----Original Message----- From: oracle-l-bounce@xxxxxxxxxxxxx[5] [oracle-l-bounce@xxxxxxxxxxxxx[6]','','','')">oracle-l -bounce@xxxxxxxxxxxxx[7][]On Behalf Of Igor Neyman Sent: Tuesday, November 09, 2004 4:31 PM To: ChrisStephens@xxxxxxx[8]; oracle-l@xxxxxxxxxxxxx[9] Subject: RE: Basic sql SELECT COUNT(*) FROM a WHERE EXISTS (SELECT * FROM b WHERE a.unit_id =3D3D b.unit_id and a.op_year =3D3D b.op_year and extract(month from a.op_date) BETWEEN (3*b.qtr - 2) and 3*b.qtr / Igor Neyman, OCP DBA ineyman@xxxxxxxxxxxxxx[10] -----Original Message----- From: oracle-l-bounce@xxxxxxxxxxxxx[11] [oracle-l-bounce@xxxxxxxxxxxxx[12]','','','')">oracle-l -bounce@xxxxxxxxxxxxx[13]On Behalf Of Stephens, Chris Sent: Tuesday, November 09, 2004 4:11 PM To: oracle-l@xxxxxxxxxxxxx[14] Subject: Basic sql Well I've had my coffee and I still can't get this to work: SELECT COUNT(*) FROM a WHERE EXISTS (SELECT *=3D3D20 FROM b WHERE a.unit_id =3D3D b.unit_id and a.op_year =3D3D b.op_year and extract(month from a.op_date) BETWEEN CASE WHEN b.qtr =3D3D 1 THEN 1 AND 3 WHEN b.qtr =3D3D 2 THEN 4 AND 6 WHEN b.qtr =3D3D 3 THEN7 AND 9 WHEN b.qtr =3D3D 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! -- //www.freelists.org/webpage/oracle-l[15] -- //www.freelists.org/webpage/oracle-l[16] This transmission may contain information that is privileged, =3D confidential and exempt from disclosure under applicable law. If you, = =3D oracle-l@xxxxxxxxxxxxx[17], are not the intended recipient, you are hereby = =3D notified that any disclosure, copying, distribution, or use of the =3D information contained herein (including any reliance thereon) is =3D STRICTLY PROHIBITED. If you received this transmission in error, please =3D immediately contact the sender and destroy the material in its entirety, =3D whether in electronic or hard copy format. -- //www.freelists.org/webpage/oracle-l[18] -- //www.freelists.org/webpage/oracle-l[19] --- Links --- 1 javascript:parent.opencompose('oracle-l-bounce@xxxxxxxxxxxxx','','','') 2 javascript:parent.opencompose('<a href= 3 javascript:parent.opencompose('oracle-l-bounce@xxxxxxxxxxxxx','','','') 4 javascript:parent.opencompose('oracle-l@xxxxxxxxxxxxx','','','') 5 javascript:parent.opencompose('oracle-l-bounce@xxxxxxxxxxxxx','','','') 6 javascript:parent.opencompose('<a href= 7 javascript:parent.opencompose('oracle-l-bounce@xxxxxxxxxxxxx','','','') 8 javascript:parent.opencompose('ChrisStephens@xxxxxxx','','','') 9 javascript:parent.opencompose('oracle-l@xxxxxxxxxxxxx','','','') 10 javascript:parent.opencompose('ineyman@xxxxxxxxxxxxxx','','','') 11 javascript:parent.opencompose('oracle-l-bounce@xxxxxxxxxxxxx','','','') 12 javascript:parent.opencompose('<a href= 13 javascript:parent.opencompose('oracle-l-bounce@xxxxxxxxxxxxx','','','') 14 javascript:parent.opencompose('oracle-l@xxxxxxxxxxxxx','','','') 15 modules/refer.pl?redirect=http%3A%2F%2Fwww.freelists.org%2Fwebpage%2Foracle-l 16 modules/refer.pl?redirect=http%3A%2F%2Fwww.freelists.org%2Fwebpage%2Foracle-l 17 javascript:parent.opencompose('oracle-l@xxxxxxxxxxxxx','','','') 18 modules/refer.pl?redirect=http%3A%2F%2Fwww.freelists.org%2Fwebpage%2Foracle-l 19 modules/refer.pl?redirect=http%3A%2F%2Fwww.freelists.org%2Fwebpage%2Foracle-l -- //www.freelists.org/webpage/oracle-l