• it is my miss , how about this.

    set nocount on

    CREATE TABLE #Test

    (ID int NOT NULL IDENTITY(1,1) Primary key,

    TranID int NOT NULL,

    OriginCode varchar(5) NOT NULL,

    DestinationCode varchar(5) NOT NULL

    )

    GO

    CREATE TABLE #Test2

    (TranID int NOT NULL,

    Code varchar(100) NOT NULL,

    )

    go

    INSERT INTO #Test

    SELECT 201205 ,'AMD','DOH'

    UNION ALL

    SELECT 201205 ,'DOH','NBO'

    UNION ALL

    SELECT 201205 ,'NBO','ADD'

    UNION ALL

    SELECT 201205 ,'ADD','DEL'

    UNION ALL

    SELECT 201205 ,'DEL','AMD'

    UNION ALL

    SELECT 201206 ,'IXJ','RMI'

    GO

    DECLARE @Tran_id int, @Tran_name nvarchar(50)

    DECLARE test_cursor CURSOR FOR

    SELECT TranID, OriginCode + DestinationCode FROM #Test

    OPEN test_cursor

    FETCH NEXT FROM test_cursor

    INTO @Tran_id, @Tran_name

    WHILE @@FETCH_STATUS = 0

    BEGIN

    if exists ( select 'x' from #Test2 where TranID = @Tran_id)

    Begin

    update #Test2

    set code = code+ @Tran_name

    where TranID = @Tran_id

    end

    else

    begin

    insert into #Test2 select @Tran_id, @Tran_name

    end

    FETCH NEXT FROM test_cursor

    INTO @Tran_id, @Tran_name

    End

    CLOSE test_cursor

    DEALLOCATE test_cursor

    select * from #Test2

    DROP TABLE #Test

    DROP TABLE #Test2

    set nocount off

    Regards
    Durai Nagarajan