• Lynn Pettis - Thursday, December 28, 2017 2:36 PM

    Now add the WHERE clause:

    INSERT INTO
      [Tbl_ComputerInventory]
      (
        [ComputerName]
        , [SerialNumber]
      )
    SELECT DISTINCT
      [ci2].[Computer Name]
      , [ci2].[Service Tag]
    FROM
      [ImpTbl_ComputerInventory] [ci2]
    WHERE
      NOT EXISTS (SELECT 1
                  FROM [Tbl_ComputerInventory] [ci1]
                  WHERE [ci2].[Computer Name] = [ci1].[Computer Name] AND [ci2].[Service Tag] = [ci1].[Service Tag]);

    Have you tried this code from Lynn?  This should work.  Another option is to use ROW_NUMBER(), something like this:


    WITH UniqueCI AS
      (
       SELECT
        ROW_NUMBER() OVER (PARTITION BY
                ITCI.[Computer Name],
                ITCI.[Service Tag]
               ORDER BY
                ITCI.[Computer Name]
              ) AS RowNo,
        ITCI.[Computer Name],
        ITCI.[Service Tag]
       FROM
        dbo.ImpTbl_ComputerInventory AS ITCI
      )
    INSERT INTO dbo.Tbl_ComputerInventory (ComputerName, SerialNumber)
        SELECT
          *
        FROM
          UniqueCI AS UCI
        WHERE
          UCI.RowNo = 1 AND
          NOT EXISTS
        (
          SELECT
           1
          FROM
           dbo.Tbl_ComputerInventory AS ITCI
          WHERE
           UCI.[Computer Name] = ITCI.ComputerName AND
           UCI.[Service Tag] = ITCI.SerialNumber
        );