我是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 :(得分: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