我是 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 选择主表的行来插入第一个表和第二个表?
感谢您的所有回复。
我想你想要类似下面的东西。临时表 @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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)