IF .Include.Value * Must have a sale in both periods m.MacroJoin = "INNER JOIN" ELSE m.MacroJoin = "FULL OUTER JOIN" ENDIF If INLIST( m.Version, "1", "2") && If by customer lcMacroOn = "cSales1.AcctiD == cSales2.Acctid AND cSales1.AliasID == cSales2.AliasID " IF .Include.Value && Must be sales in both periods for this cust. lcMacroWhere = "cSales1.Sell > 0 AND cSales1.Qty > 0 " + ; "AND EXISTS ( Select DISTINCT cSales2.AcctID " + ; "from cSales2, cSales1 " + ; "where cSales2.AcctiD == cSales1.Acctid " + ; "and cSales2.AliasID == cSales1.AliasID " + ; "and cSales2.Sell > 0 " + ; "and cSales2.Qty > 0) " Else && don't care if in both periods lcMacroWhere = ".T." EndIf Else && By product lcMacroOn = "cSales1.AliasID = cSales2.AliasID " IF .Include.Value && Must be sales in both periods lcMacroWhere = "cSales1.Sell > 0 AND cSales1.Qty > 0 " + ; "AND EXISTS ( Select DISTINCT cSales2.AcctID " + ; "from cSales2, cSales1 " + ; "where cSales2.AliasID == cSales1.AliasID " + ; "and cSales2.Sell > 0 " + ; "and cSales2.Qty > 0 ) " Else && don't care if in both periods lcMacroWhere = ".T." EndIf EndIf SELECT DISTINCT NVL(cSales1.Acctid,cSales2.Acctid) as Acctid,; NVL(cSales1.AliasId,cSales2.AliasId) as AliasId,; NVL(cSales1.Qty,0000000000.000) as Qty1,; NVL(cSales1.Sell,0000000000.00) as Sell1,; NVL(cSales1.Cost,0000000000.00) as Cost1,; NVL(cSales2.Qty,0000000000.000) as Qty2,; NVL(cSales2.Sell,0000000000.00) as Sell2,; NVL(cSales2.Cost,0000000000.00) as Cost2 ; FROM cSales1 &MacroJoin cSales2 ; ON &lcMacroOn ; WHERE &lcMacroWhere ; INTO CURSOR cSales12An example of the output below:
Prod 1010104 NOV 2008 2007 Cust A 115.76 17.34 115.76 143.86 115.76 128.45 115.76 17.98 115.76 35.96 Cust B 26.46 17.98 26.46 35.96 26.46 128.45 26.46 143.86 Cust C 18.52 128.45 18.52 17.34 18.52 17.98 18.52 143.86 18.52 35.96 Cust D 55.57 17.98 55.57 35.96 55.57 17.34 55.57 143.86 55.57 128.45 Cust D 297.68 128.45 297.68 17.98 297.68 17.34 297.68 143.86 297.68 35.96 Totals for product 1010104 … … 2569.95 1717.95Another report gives sales only of the same product, for Nov 2008:
Cust A Inv 68089 12Nov08 115.76 Cust B Inv 66861 3Nov08 26.46 Cust C Inv 68123 14Nov08 18.52 Cust D Inv 68164 26Nov08 55.57 Cust E Inv 68185 18Nov08 198.45 Inv 68185 19Nov08 99.23 Total for stock item 1010104 … 513.99And for Nov 2007:
Cust F Inv 36389 12Nov07 96.34 Inv 36389 26Nov07 32.11 Cust G Inv 36405 6Nov07 17.98 Cust H Inv 36447 7Nov07 17.98 Cust I Inv 36451 27Nov07 17.34 Cust J Inv 36457 1Nov07 17.98 Inv 36457 8Nov07 17.98Note the erroneous compare output takes the customers from the Nov 2008 report but throws in every permutation of the sales in both periods.