• Really ugly recursive CTE solution (I'm hoping someone comes up with a better solution). The performance for this will scale terribly.

    WITH CTE AS (

    SELECT ID, TranID,

    CASE WHEN a.N = 1 THEN OriginCode ELSE DestinationCode END AS code,

    ROW_NUMBER() OVER(PARTITION BY TranID ORDER BY ID, a.N) AS pos

    FROM #Test

    CROSS JOIN (SELECT 1 UNION ALL SELECT 2)a(N)),

    CTE2 AS (

    SELECT ID, TranID, code, CAST(code AS VARCHAR(MAX)) AS overallCode, pos

    FROM CTE

    WHERE pos = 1

    UNION ALL

    SELECT b.ID, b.TranID, b.code, overallCode + b.code, b.pos

    FROM CTE2 a

    INNER JOIN CTE b ON a.TranID = b.TranID AND a.pos < b.pos AND a.code <> b.code)

    SELECT TranID, overallCode

    FROM (SELECT TranID, overallCode, ROW_NUMBER() OVER(PARTITION BY TranID ORDER BY LEN(overallCode) DESC)

    FROM CTE2) a(TranID, overallCode, ItemNumber)

    WHERE ItemNumber = 1;

    Results: -

    TranID overallCode

    ----------- --------------------

    201205 AMDDOHNBOADDDELAMD

    201206 IXJRMI


    Forever trying to learn
    My blog - http://www.cadavre.co.uk/
    For better, quicker answers on T-SQL questions, click on the following...http://www.sqlservercentral.com/articles/Best+Practices/61537/
    For better, quicker answers on SQL Server performance related questions, click on the following...http://www.sqlservercentral.com/articles/SQLServerCentral/66909/