• DECLARE @x XML ='<MatchKeys>

    <fuzzyKeys>

    <key key1="MatchKey_PostOut" key2="MatchKey_Name1" />

    <key key1="MatchKey_Name1" key2="MatchKey_PhoneticStreet" key3="MatchKey_PhoneticCompanyName"/>

    <key key1="MatchKey_PostOut" key2="MatchKey_PostIn" />

    </fuzzyKeys>

    </MatchKeys>';

    SELECT DENSE_RANK() OVER(ORDER BY x1.r1) AS MatchKey_Group,

    ROW_NUMBER() OVER(PARTITION BY x1.r1 ORDER BY x2.r2) AS MatchKey_ID,

    x2.r2.value('.','VARCHAR(30)') AS KeyColumn

    FROM @x.nodes('/MatchKeys/fuzzyKeys/key') AS x1(r1)

    CROSS APPLY x1.r1.nodes('@*') AS x2(r2);

    ____________________________________________________

    Deja View - The strange feeling that somewhere, sometime you've optimised this query before

    How to get the best help on a forum

    http://www.sqlservercentral.com/articles/Best+Practices/61537