CREATE CURSOR Temp (Master I, NextIndex I) >SELECT Master, MyUDF(Master) AS Index, Item FROM MyTable >USE IN Temp > >FUNCTION MyUDF (lnMaster) >LOCAL lnAlias, lnIndex >lnAlias = Alias() >SELECT Temp >LOCATE FOR Master = lnMaster > >IF Found() > REPLACE NextIndex WITH NextIndex + 1 >ELSE > INSERT INTO Temp VALUES (lnMaster, 1) >ENDIF > >lnAlias = NextIndex >SELECT (lnAlias) >RETURN lnIndex>
SELECT Master, 0 AS Index, Item FROM MyTable INTO TABLE Temp ORDER BY 1 >lnI = 0 >lnMaster = Master >SCAN > IF lnMaster = Master > lnI = lnI + 1 > ELSE > lnMaster = Master > lnI = 1 > ENDIF > REPLACE Index WITH lnI >ENDSCANNote that the second option needs a physical table on disk. There is a way to open a cursor created with a SELECT-SQL as read-write, but I don't remember it by hear (somthing like USE AGAIN IN 0 ALIAS)
>> >> master item >> 1 apple >> 1 banana >> 1 pear >> 2 tomato >> 2 apricot >> 3 squash >> 4 turnip >> 4 orange >> >>>>
>> >> master # item >> 1 1 apple >> 1 2 banana >> 1 3 pear >> 2 1 tomato >> 2 2 apricot >> 3 1 squash >> 4 1 turnip >> 4 2 orange >> >>>>