• Very interesting approach. Without more test data I cant say is its any faster than straight inserts (below) but a nicely written article. Many thanks for taking the time to share.

    INSERT INTO dbo.NT_Client(ClientName,Town)

    SELECT DISTINCT ClientName,Town FROM dbo.NT_SourceData

    INSERT INTO dbo.NT_OrderHeader (Client_ID,OrderNumber,OrderDate)

    SELECT DISTINCT c.ID,d.OrderNumber,d.OrderDate

    FROM dbo.NT_SourceData d INNER JOIN dbo.NT_Client c ON c.ClientName=d.ClientName AND c.Town=d.Town

    INSERT INTO dbo.NT_OrderDetail (OrderHeader_ID,ItemNo,ItemQuantity,ItemCost,ItemTotal)

    SELECT DISTINCT h.ID,d.ItemID,d.ItemQty,d.ItemCost,d.ItemTotal

    FROM dbo.NT_SourceData d INNER JOIN dbo.NT_OrderHeader h ON d.OrderNumber=h.OrderNumber

    Pete