Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wybierz z jednej tabeli i wstaw do kolejnych dwóch tabel

Myślę, że chcesz coś takiego jak poniżej. Tymczasowa tabela @Output przechwyci wstawione tożsamości dla pierwszej tabeli, a następnie można ich użyć podczas wstawiania do drugiej tabeli.

DECLARE @Output TABLE 
(       FirstTableID    INT NOT NULL PRIMARY KEY, 
        WarehouseCode   VARCHAR(3), 
        CustomerCode    VARCHAR(4)
)
INSERT INTO FirstTable (WarehouseCode, CustomerCode)
OUTPUT inserted.FirstTblID, inserted.WarehouseCode, inserted.CustomerCode INTO @Output
SELECT  DISTINCT LEFT(LocationCode, 3) [WarehouseCode], CustomerCode
FROM    [PrimaryTable]

INSERT INTO SecondTable (ItemCode, LocationCode, CustomerCode, FirstTblID)
SELECT  p.ItemCode,
        p.LocationCode,
        p.CustomerCode, 
        o.FirstTableID
FROM    [PrimaryTable] p
        INNER JOIN @Output o
            ON LEFT(LocationCode, 3) = WarehouseCode
            AND p.CustomerCode = o.CustomerCode



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Error 111:„… musi być pierwszą instrukcją w partii kwerendy”

  2. Stół z dużą ilością kolumn

  3. Jak zaszyfrować procedurę składowaną w SQL Server

  4. Rozwiązywanie problemów podczas pracy z datą i godziną w SQL Server

  5. Zapytanie, jak dodać brakujące daty w sql