SQL四个表中两个表头,两个表体的数据如何从A复制到B

2024-12-26 06:09:37
推荐回答(2个)
回答1:

CREATE TABLE inventory --物料表
(
invcode VARCHAR(22),
invname VARCHAR(22)
)
go
INSERT INTO inventory
SELECT '201097','苹果' UNION
SELECT '201098','葡萄' UNION
SELECT '201099','草莓' UNION
SELECT '201091','梨子'
go
CREATE TABLE A
(
ccode INT,--订单号
ccusname NVARCHAR(22),--客户信息
STATUS NVARCHAR(22) --状态
)
GO
INSERT INTO A
SELECT '1','XX技术有限公司1','审核' UNION
SELECT '2','XX技术有限公司2','弃审'
GO
CREATE TABLE A_s
(
ccode INT,--订单号
invcode NVARCHAR(22),--物料信息
iquantity DECIMAL,--数量
uf VARCHAR(22) --单位
)
GO
INSERT INTO A_s
SELECT '1','201099','22.00000','个' UNION
SELECT '1','201098','10.00000','个' UNION
SELECT '2','201097','30.00000','个' UNION
SELECT '2','201090','30.00000','个'
GO
CREATE TABLE B
(
ccode INT,--订单号
ccusname NVARCHAR(22),--客户信息
STATUS NVARCHAR(22) --状态
)
go
CREATE TABLE B_s
(
ccode INT,--订单号
invcode NVARCHAR(22),--物料信息
iquantity DECIMAL,--数量
uf VARCHAR(22)
)
GO

DECLARE @ccode INT
SET @ccode = '1'
--3.如果A表的表头的订单号在B表中不存在,直接插入表头,表体数据到B的表头,表体数据中。
IF NOT EXISTS (SELECT * FROM B WHERE ccode = @ccode)
BEGIN
INSERT INTO B SELECT * FROM A WHERE ccode = @ccode
INSERT INTO B_s SELECT * FROM A_s WHERE ccode = @ccode
END
--.如果在A表的表头的订单号在B中已经存在了,那么就要更新已经存在的表头和表体数据,
ELSE IF EXISTS (SELECT * FROM B WHERE ccode = @ccode)
BEGIN
UPDATE B SET ccusname=a.ccusname,STATUS=a.STATUS FROM A a WHERE a.ccode = @ccode AND B.ccode = @ccode
--另外如果是A表表体新增加的不在B表表体中的订单行要插入B表表体数据中
IF NOT EXISTS(SELECT * FROM B_s WHERE ccode = @ccode)
INSERT INTO B_s SELECT * FROM A_s WHERE ccode = @ccode
ELSE
UPDATE B_s SET invcode=a.invcode,iquantity=a.iquantity,uf=a.uf FROM A_s a WHERE a.ccode = @ccode AND B_s.ccode = @ccode
END

SELECT * FROM B
SELECT * FROM B_s
SELECT * FROM A
SELECT * FROM A_s
TRUNCATE TABLE B_s

回答2:

你没把需求说清楚,有四个表,怎么只说了AB两表,物料表又是什么