• Surely this is the simplest solution? (be warned of a nasty catch when creating these 'quirky updates'. the order of execution of the update is -variable assignments first then column assignments-both left to right!)

    [font="Courier New"]

    --create the sample table

    DECLARE @Sample TABLE (TheName VARCHAR(4),Identifier INT, sex VARCHAR(1))

    INSERT INTO @Sample (TheName,Identifier,Sex)

       SELECT 'ABC', 24, 'M' UNION ALL

       SELECT 'ABC',  24,'M' UNION ALL

       SELECT 'LMN',  27, 'M' UNION ALL

       SELECT 'LMN',  27, 'M' UNION ALL

       SELECT 'LMN',  27, 'M' UNION ALL

       SELECT 'PQRS',  25, 'F' UNION ALL

       SELECT 'XYZ',  24, 'M' UNION ALL

       SELECT 'XYZ',  25, 'M'

    --@Sex variable only used to force the order of execution of the update

    DECLARE @hash VARCHAR(80), @sex VARCHAR(1)

    UPDATE @sample

       SET

       @sex=Sex = CASE WHEN COALESCE(@hash,'')

                               <>TheName+CONVERT(VARCHAR(5),Identifier)+sex

               THEN 'd' ELSE SEX END,

       @hash= TheName+CONVERT(VARCHAR(5),Identifier)+sex

    DELETE FROM @sample WHERE sex='d'

    SELECT * FROM @sample[/font]

    Best wishes,
    Phil Factor