用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 可乐 箱
就这个样子 希望帮我 看下用什么语句,这个题绕的我现在很烦恼谢谢了。写的好了让我一眼看明白的分追加。谢谢
展开
 我来答
ronal10
2012-02-21 · TA获得超过593个赞
知道答主
回答量:88
采纳率:0%
帮助的人:60.5万
展开全部
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 行処理されました)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友59439df
2012-02-21 · TA获得超过219个赞
知道小有建树答主
回答量:135
采纳率:100%
帮助的人:123万
展开全部
--得到C表结果:
select 编号, 名称, 单位 from A表
union all
select 编号, 名称, 单位 from B表 order by 编号
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
765398944
2012-02-25 · 超过26用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:77.5万
展开全部
这样写
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
346351545
2012-02-21
知道答主
回答量:6
采纳率:0%
帮助的人:8939
展开全部
么么么 ,哈哈
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wtumamba
2012-02-21 · 超过25用户采纳过TA的回答
知道答主
回答量:196
采纳率:0%
帮助的人:73.1万
展开全部
表C的编号是自动增加的吗,是自动的就简单了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式