Dear Reynards and Vixens:

      I have some SQL that I would like simplified.

      I have a table of charge codes.  (clcode and wccode are further 
specialisations and are considered different charge codes for the 
purposes described here.)  I need to do some manipulation where I 
need to know if the current year's charge code is the latest.  My steps:

   1) Create a cursor (mvt) containing the charge code with the 
latest validtil date for each charge code.

   2) Create a cursor (cvt) containing the charge code with the 
latest validtil date in the year 2009 for each charge code.

   3) Create a third cursor with the 2009 charge code data plus an 
indication of whether the 2009 validtil is equal to the mvt validtil 
date.  The question being answered is whether each of the 2009 charge 
codes is the latest by validtil charge code.  (This is being used to 
generate charge codes for next year.)

      The code below works, but how do I get rid of the union?  It 
does not feel right that I have to have it to resolve the boolean, 
nor that the two queries being unioned are nearly identical.  What say you?

***** Start of Included Code *****
    select funccode,clcode,wccode,max(validtil) as maxvt from cwkf;
    group by funccode,clcode,wccode;
    into cursor mvt

    select funccode,clcode,wccode,max(validtil) as currvt from cwkf;
    where validtil>={^2009.01.01} and validtil<={^2009.12.31};
    group by funccode,clcode,wccode;
    into cursor cvt

    select funccode,clcode,wccode,currvt as validtil,.t. as ismax from cvt;
    where exists;
     (;
     select funccode,clcode,wccode,maxvt from mvt;
     where;
      funccode=cvt.funccode and clcode=cvt.clcode and wccode=cvt.wccode and;
      maxvt=currvt;
     );
    union;
    select funccode,clcode,wccode,currvt as validtil,.f. as ismax from cvt;
    where not exists;
     (;
     select funccode,clcode,wccode,maxvt from mvt;
     where;
      funccode=cvt.funccode and clcode=cvt.clcode and wccode=cvt.wccode and;
      maxvt=currvt;
     );
    order by funccode,clcode,wccode;
    into cursor truefalse
***** End of Included Code *****

Sincerely,

Gene Wirchenko


_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/profox
OT-free version of this list: http://leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/[email protected]
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to