我是SQL的初学者,对Transact-SQL不太了解。
我意识到这是一个新手问题,但是我正在寻找一个简单的解决方案。
我有一个带有一些列(locationCode, CustomerCode)的表。
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
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选择主表的行来插入第一张表和第二张表呢?
感谢您的所有答复。
我认为您想要类似以下的内容。临时表@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