2012-03-30 7 views
3

Я новичок в 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?

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

+0

Посмотрите на эту ссылку http://blog.sqlauthority.com/2011/08/10/sql-server-use-insert-into-select-instead-of-cursor/ –

+0

я могу вставить второй стол, используя вторую таблицу вставки (colums, ..), выберите основную таблицу – NNNN

+0

, вы можете отредактировать сообщение и вставить в него свой код, было бы проще на глазах =) – cctan

ответ

5

Я думаю, вы хотите что-то вроде ниже. Временная таблица @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 
Смежные вопросы