gpt4 book ai didi

sql - 从一个表中选择并插入到另外两个表中

转载 作者:行者123 更新时间:2023-12-03 18:42:40 25 4
gpt4 key购买 nike

我是 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

warehouseCodelocationCode

前三个字符的组合

第一个表中的数据按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

关于sql - 从一个表中选择并插入到另外两个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9939583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com