This should run a bit faster: SELECT b.id, b.prod_num FROM ( SELECT clm_num, subtyp_cd, state, contract, quarter, COLLECT (prod_num) AS prods FROM t1 WHERE subtyp_cd = 'ORIG' GROUP BY clm_num, subtyp_cd, state, contract, quarter) a JOIN t1 b ON a.contract = b.contract AND a.state = b.state AND a.quarter = b.quarter AND a.clm_num <> b.clm_num AND b.subtyp_cd = 'RESUB' WHERE b.prod_num NOT IN (SELECT "COLUMN_VALUE" FROM TABLE (a.prods) f);
On Thu, May 16, 2013 at 2:57 PM, Gayathri <gd0...@gmail.com> wrote: > Thanks a lot Michael... > Verified the data.. This worked prefect. > But since this table is huge... it took a long time to execute. > > > > On Thu, May 16, 2013 at 1:12 PM, Michael Moore <michaeljmo...@gmail.com>wrote: > >> see if this gives what you want. >> >> SELECT b.id,b.prod_num >> FROM (SELECT DISTINCT clm_num, >> subtyp_cd, >> state, >> contract, >> quarter >> FROM t1 >> WHERE subtyp_cd = 'ORIG') a >> JOIN >> t1 b >> ON a.contract = b.contract >> AND a.state = b.state >> AND a.quarter = b.quarter >> AND a.clm_num <> b.clm_num >> AND b.subtyp_cd = 'RESUB' >> WHERE b.prod_num NOT IN >> (SELECT prod_num >> FROM t1 x >> WHERE x.contract = a.contract >> AND x.state = a.state >> AND x.quarter = a.quarter >> AND subtyp_cd = 'ORIG'); >> >> >> >> On Thu, May 16, 2013 at 11:37 AM, Gayathri <gd0...@gmail.com> wrote: >> >>> The result should pick: >>> >>> id:119 and 120 as it had the prods those are not in its original >>> subtyp_cd. >>> >>> >>> On Thu, May 16, 2013 at 11:35 AM, Gayathri <gd0...@gmail.com> wrote: >>> >>>> Thanks Michael for taking a look into this - >>>> >>>> I have Corrected the data now : >>>> >>>> id= 111, Clm_num=12, subtyp_cd = ORIG, state=CA, Contract = C1, >>>> Quarter=01/01/2000, prod = p1 >>>> id= 112, Clm_num=12, subtyp_cd = ORIG, state=CA, Contract = C1, >>>> Quarter=01/01/2000, prod = p2 >>>> id= 113, Clm_num=12, subtyp_cd = ORIG, state=CA, Contract = C1, >>>> Quarter=01/01/2000, prod = p3 >>>> >>>> id= 114, Clm_num=13, subtyp_cd = RESUM, state=CA, Contract = C1, >>>> Quarter=01/01/2000, prods = p2 >>>> id= 115, Clm_num=13, subtyp_cd = RESUM, state=CA, Contract = C1, >>>> Quarter=01/01/2000, prod = p2 >>>> >>>> id= 116, Clm_num=10, subtyp_cd = ORIG, state=IL, Contract = C1, >>>> Quarter=01/01/2000, prod = p11 >>>> id= 117, Clm_num=10, subtyp_cd = ORIG, state=IL, Contract = C1, >>>> Quarter=01/01/2000, prod = p12 >>>> id= 118, Clm_num=10, subtyp_cd = ORIG, state=IL, Contract = C1, >>>> Quarter=01/01/2000, prod = p13 >>>> >>>> id= 119, Clm_num=11, subtyp_cd = RESUM, state=IL, Contract = C1, >>>> Quarter=01/01/2000, prod = p14 >>>> id= 120, Clm_num=11, subtyp_cd = RESUM, state=IL, Contract = C1, >>>> Quarter=01/01/2000, prod = p15 >>>> >>>> So it is matching on Contract, state, Quarter. >>>> >>>> Thanks in advance! >>>> >>>> >>>> On Thu, May 16, 2013 at 10:52 AM, Michael Moore < >>>> michaeljmo...@gmail.com> wrote: >>>> >>>>> I could give you a query that can accomplish what you want, but there >>>>> is one ambiguity that needs to be cleared up. Suppose you had two RESUBs >>>>> that matched a given ORIG, what would you want the result to be? >>>>> Add one more row of data to your table: >>>>> 120,11,RESUB,CA,C1,1/1/2000,p15 >>>>> >>>>> What should the result of the query look like? >>>>> >>>>> >>>>> >>>>> On Thu, May 16, 2013 at 10:43 AM, Michael Moore < >>>>> michaeljmo...@gmail.com> wrote: >>>>> >>>>>> ID 111 matches id 119 >>>>>> ID 112 matches id 119 >>>>>> ID 113 matches id 119 >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Wed, May 15, 2013 at 10:57 PM, Gayathri <gd0...@gmail.com> wrote: >>>>>> >>>>>>> Hi All, >>>>>>> >>>>>>> I have a table as below >>>>>>> >>>>>>> table name = table >>>>>>> columns are as below : >>>>>>> id(Unique num) >>>>>>> subtyp_cd ('ORIG', 'RESUM') >>>>>>> state >>>>>>> quarter >>>>>>> contract >>>>>>> prod_num >>>>>>> clm_num >>>>>>> >>>>>>> >>>>>>> And here are the records - >>>>>>> >>>>>>> id= 111, Clm_num=12, subtyp_cd = ORIG, state=CA, Contract = C1, >>>>>>> Quarter=01/01/2000, prod = p1 >>>>>>> id= 112, Clm_num=12, subtyp_cd = ORIG, state=CA, Contract = C1, >>>>>>> Quarter=01/01/2000, prod = p2 >>>>>>> id= 113, Clm_num=12, subtyp_cd = ORIG, state=CA, Contract = C1, >>>>>>> Quarter=01/01/2000, prod = p3 >>>>>>> >>>>>>> id= 114, Clm_num=13, subtyp_cd = RESUM, state=CA, Contract = C1, >>>>>>> Quarter=01/01/2000, prods = p2 >>>>>>> id= 115, Clm_num=13, subtyp_cd = RESUM, state=CA, Contract = C1, >>>>>>> Quarter=01/01/2000, prod = p2 >>>>>>> >>>>>>> id= 116, Clm_num=10, subtyp_cd = ORIG, state=IL, Contract = C1, >>>>>>> Quarter=01/01/2000, prod = p11 >>>>>>> id= 117, Clm_num=10, subtyp_cd = ORIG, state=IL, Contract = C1, >>>>>>> Quarter=01/01/2000, prod = p12 >>>>>>> id= 118, Clm_num=10, subtyp_cd = ORIG, state=IL, Contract = C1, >>>>>>> Quarter=01/01/2000, prod = p13 >>>>>>> >>>>>>> id= 119, Clm_num=11, subtyp_cd = RESUM, state=CA, Contract = C1, >>>>>>> Quarter=01/01/2000, prod = p14 >>>>>>> >>>>>>> I need to pull the prod_num that is in subtyp_cd = 'RESUM' and not >>>>>>> in subtyp_cd = 'ORIG' >>>>>>> from the example above, need to pull clm_num = 11 and prod_num p14 >>>>>>> >>>>>>> its a self joined query - >>>>>>> >>>>>>> this is how it is joined: >>>>>>> >>>>>>> select b.id, b.prod_num >>>>>>> from table a, table b >>>>>>> where a.contract = b.contract >>>>>>> and a.state = b.state >>>>>>> and a.quarter = b.quarter >>>>>>> and a.clm_num <> b.clm_num >>>>>>> and a.subtyp_cd = 'ORIG' >>>>>>> and b.subtyp_cd = 'RESUB' >>>>>>> and b.prod_num not in (select prod_num from table where clm_num = >>>>>>> a.clm_num) >>>>>>> >>>>>>> this query is not returning the expected results. I get multiple >>>>>>> records, please let me know what am i missing? >>>>>>> >>>>>>> Thanks in advance! >>>>>>> G >>>>>>> >>>>>>> -- >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "Oracle PL/SQL" group. >>>>>>> To post to this group, send email to Oracle-PLSQL@googlegroups.com >>>>>>> To unsubscribe from this group, send email to >>>>>>> oracle-plsql-unsubscr...@googlegroups.com >>>>>>> For more options, visit this group at >>>>>>> http://groups.google.com/group/Oracle-PLSQL?hl=en >>>>>>> >>>>>>> --- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "Oracle PL/SQL" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to oracle-plsql+unsubscr...@googlegroups.com. >>>>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> -- >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Oracle PL/SQL" group. >>>>> To post to this group, send email to Oracle-PLSQL@googlegroups.com >>>>> To unsubscribe from this group, send email to >>>>> oracle-plsql-unsubscr...@googlegroups.com >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/Oracle-PLSQL?hl=en >>>>> >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Oracle PL/SQL" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to oracle-plsql+unsubscr...@googlegroups.com. >>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>> >>>>> >>>>> >>>> >>>> >>> -- >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Oracle PL/SQL" group. >>> To post to this group, send email to Oracle-PLSQL@googlegroups.com >>> To unsubscribe from this group, send email to >>> oracle-plsql-unsubscr...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/Oracle-PLSQL?hl=en >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Oracle PL/SQL" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to oracle-plsql+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> >>> >> >> -- >> -- >> You received this message because you are subscribed to the Google >> Groups "Oracle PL/SQL" group. >> To post to this group, send email to Oracle-PLSQL@googlegroups.com >> To unsubscribe from this group, send email to >> oracle-plsql-unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/Oracle-PLSQL?hl=en >> >> --- >> You received this message because you are subscribed to the Google Groups >> "Oracle PL/SQL" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to oracle-plsql+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- > -- > You received this message because you are subscribed to the Google > Groups "Oracle PL/SQL" group. > To post to this group, send email to Oracle-PLSQL@googlegroups.com > To unsubscribe from this group, send email to > oracle-plsql-unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/Oracle-PLSQL?hl=en > > --- > You received this message because you are subscribed to the Google Groups > "Oracle PL/SQL" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to oracle-plsql+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- -- You received this message because you are subscribed to the Google Groups "Oracle PL/SQL" group. To post to this group, send email to Oracle-PLSQL@googlegroups.com To unsubscribe from this group, send email to oracle-plsql-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/Oracle-PLSQL?hl=en --- You received this message because you are subscribed to the Google Groups "Oracle PL/SQL" group. To unsubscribe from this group and stop receiving emails from it, send an email to oracle-plsql+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.