Выберите из одной таблицы и вставьте в другую две таблицы - PullRequest
3 голосов
/ 30 марта 2012

Я новичок в SQL, и я мало знаю о Transact-SQL.

Я понимаю, что это вопрос новичка, но я ищу простое решение.

У меня есть таблица с некоторыми столбцами (locationCode, CustomerCode).

Первичная таблица

    ItemCode    locationCode    CustomerCode
    I001        001001          C001 
    I002        001002          C001    
    I003        001001          C002
    I004        002001          C002

Я хочу выбрать данные из этой таблицы и вставить в два другихтаблица.

Первая таблица

firstTblId(autoIncrement)  warehouseCode  CustomerCode
       1                       001           C001   
       2                       001           C002
       3                       002           C002

warehouseCode представляет собой комбинацию первых трех символов из locationCode

Данные в первой таблицесгруппированы по первым трем символам locationCode и коду клиента

второй таблице

secondTblId
(autoIncrement)  ItemCode  locationCode  CustomerCode   firstTblId(FK)
      1            I001       001001        C001            1
      2            I002       001002        C001            1
      3            I003       001001        C002            2
      4            I004       002001        C002            3

Итак, как я могу вставить первую таблицу и вторую таблицу, выбрав первичные таблицыстроки с SQL ??

Спасибо за все ваши ответы.

1 Ответ

5 голосов
/ 30 марта 2012

Я думаю, вы хотите что-то вроде ниже.Временная таблица @Output будет захватывать вставленные идентификаторы для первой таблицы, затем они могут использоваться при вставке во вторую таблицу.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...