用sql server 对两个表进行对比的语句,要求两个表数据综合生成另一个表
例如:数据库mytest中有表A表B,表A是以前的数据,表B是现在的数据。如,表A中有编号001名称猪蹄单位个编号002名称火腿单位根编号003名称可乐单位瓶表B中有编号...
例如:数据库mytest中有表A表B,表A是以前的数据,表B是现在的数据。
如,表A中有 编号001 名称猪蹄 单位个 编号002 名称火腿 单位 根 编号003 名称 可乐 单位瓶
表B中有 编号001 名称猪蹄 单位个 编号002 名称火腿 单位箱 编号003 名称可乐 单位 箱
最后生成表C 编号 名称 单位
001 猪蹄 个
002 火腿 根
003 火腿 箱
004 可乐 瓶
005 可乐 箱
就这个样子 希望帮我 看下用什么语句,这个题绕的我现在很烦恼谢谢了。写的好了让我一眼看明白的分追加。谢谢 展开
如,表A中有 编号001 名称猪蹄 单位个 编号002 名称火腿 单位 根 编号003 名称 可乐 单位瓶
表B中有 编号001 名称猪蹄 单位个 编号002 名称火腿 单位箱 编号003 名称可乐 单位 箱
最后生成表C 编号 名称 单位
001 猪蹄 个
002 火腿 根
003 火腿 箱
004 可乐 瓶
005 可乐 箱
就这个样子 希望帮我 看下用什么语句,这个题绕的我现在很烦恼谢谢了。写的好了让我一眼看明白的分追加。谢谢 展开
展开全部
use testdb
drop table A
drop table B
drop table C
-- 创建表A
create table A
(id varchar(3) not null,
name varchar(100) not null,
unit varchar(100) not null);
-- 创建表B
create table B
(id varchar(3) not null,
name varchar(100) not null,
unit varchar(100) not null);
--表A数据
insert into A values('001','猪蹄','个');
insert into A values('002','火腿','根');
insert into A values('003','可乐','箱');
--表B数据
insert into B values('001','猪蹄','个');
insert into B values('002','火腿','箱');
insert into B values('003','可乐','瓶');
--创建表C
create table C
(id varchar(3) not null,
name varchar(100) not null,
unit varchar(100) not null);
--插入表C数据
insert into C
select *
from A
union
select *
from B;
--生成新ID
update C
set id = replicate('0',3 - len(cast([newid] as char))) + cast([newid] as char)
from
(select row_number() over(order by id,name,unit) as [newid],
id
from C) as C
-- 结果查询
select *
from C
order by id
id name unit
---- ---------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------
001 猪蹄 个
002 火腿 根
003 火腿 箱
004 可? 箱
005 可? 瓶
(5 行処理されました)
drop table A
drop table B
drop table C
-- 创建表A
create table A
(id varchar(3) not null,
name varchar(100) not null,
unit varchar(100) not null);
-- 创建表B
create table B
(id varchar(3) not null,
name varchar(100) not null,
unit varchar(100) not null);
--表A数据
insert into A values('001','猪蹄','个');
insert into A values('002','火腿','根');
insert into A values('003','可乐','箱');
--表B数据
insert into B values('001','猪蹄','个');
insert into B values('002','火腿','箱');
insert into B values('003','可乐','瓶');
--创建表C
create table C
(id varchar(3) not null,
name varchar(100) not null,
unit varchar(100) not null);
--插入表C数据
insert into C
select *
from A
union
select *
from B;
--生成新ID
update C
set id = replicate('0',3 - len(cast([newid] as char))) + cast([newid] as char)
from
(select row_number() over(order by id,name,unit) as [newid],
id
from C) as C
-- 结果查询
select *
from C
order by id
id name unit
---- ---------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------
001 猪蹄 个
002 火腿 根
003 火腿 箱
004 可? 箱
005 可? 瓶
(5 行処理されました)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
--得到C表结果:
select 编号, 名称, 单位 from A表
union all
select 编号, 名称, 单位 from B表 order by 编号
select 编号, 名称, 单位 from A表
union all
select 编号, 名称, 单位 from B表 order by 编号
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样写
select * into C from
(select '00'+cast((rank() over(order by id,name,unit)) as varchar(10)) num,name,unit from
(select * from A union
select * from B)t)t1
select * into C from
(select '00'+cast((rank() over(order by id,name,unit)) as varchar(10)) num,name,unit from
(select * from A union
select * from B)t)t1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
表C的编号是自动增加的吗,是自动的就简单了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询