• how about this one

    SET @InvoiceID = 1;WITH rCTE AS

    (

    SELECT InvoiceID, BookingID, 1 AS HierarchyLevel

    FROM #IDs

    WHERE InvoiceID = @InvoiceID

    UNION ALL

    SELECT IDs.InvoiceID, ids2.BookingID, rCTE.HierarchyLevel + 1 AS HierarchyLevel

    FROM rCTE

    JOIN #IDs ids

    ON IDs.BookingID = rCTE.BookingID AND

    ids.InvoiceId <> rcte.InvoiceID

    INNER JOIN #IDs ids2

    ON ids2.InvoiceId = ids.InvoiceID

    WHERE rCTE.InvoiceID<ids2.InvoiceId

    )

    select * from Rcte

    Every rule in a world of bits and bytes, can be bend or eventually be broken
    MyBlog About Common dialog control
    A Visualizer for viewing SqlCommand object script [/url]