两个表中字段非常多,字段个数不等且不完全重复想要合并怎么写sql语句
如下
a表字段
姓名 工资 年 月b表字段
姓名 工资 奖金 扣保险 年 月合并时不是相同姓名的合并,而是所有数据合并且每次合并月份会不一样但是每月的人都差不多 所以会有一张表里 一个人出现多次的情况 但是月份是不一样的 怎么写啊 先谢谢了
如下
a表字段
姓名 工资 年 月b表字段
姓名 工资 奖金 扣保险 年 月合并时不是相同姓名的合并,而是所有数据合并且每次合并月份会不一样但是每月的人都差不多 所以会有一张表里 一个人出现多次的情况 但是月份是不一样的 怎么写啊 先谢谢了
union all
select 姓名,工资,奖金,扣保险,年,月 from b表
-- 你先看看效果是不是你要的
-- 你说字段的顺序不一样是什么意思?只是两个表显示那个没关系的。字段可以看成没有先后顺序。
(
姓名 varchar(10),
工资 int,
年 int,
月 int
)
insert into a values('李四', 1000,2011, 1)
insert into a values( '张三', 1500, 2011, 1)
create table b
(
姓名 varchar(10),
工资 int,
扣保险 int,
奖金 int,
年 int,
月 int,
)
insert into b values('张三', 1500 ,100 ,100 ,2011, 2)
insert into b values('李四', 1000, 150 ,100 ,2011, 2)select 姓名 ,工资,0 as 扣保险 ,0 as 奖金, 年, 月 from a
union all
select 姓名 ,工资,扣保险,奖金, 年, 月 from b/*
姓名,工资,扣保险,奖金,年,月
李四,1000,0,0,2011,1
张三,1500,0,0,2011,1
张三,1500,100,100,2011,2
李四,1000,150,100,2011,2(4 行受影响)
由于字段很多 我是这样写得:select * from a1a1
union all
select *,0 as '税前工资',0 as '个人所得税',0 as '技工补贴' from temp
nvarchar 值 '刘淑香' 这能转换成为int类型吗?
2 select '李四' 姓名, 1000 工资, 2011 年, 1 月 from dual
3 union all
4 select '张三' 姓名, 1500 工资, 2011 年, 1 月 from dual),
5 B as (
6 select '张三' 姓名, 1500 工资, 100 奖金, 100 扣保险, 2011 年,2 月 from dual
7 union all
8 select '李四' 姓名, 1000 工资, 150 奖金, 100 扣保险, 2011 年,2 月 from dual)
9 select 姓名,工资,null as 奖金,null as 扣保险,年,月 from A
10 union all
11 select 姓名,工资,奖金,扣保险,年,月 from B;
姓名 工资 奖金 扣保险 年 月
---- ---------- ---------- ---------- ---------- ----------
李四 1000 2011 1
张三 1500 2011 1
张三 1500 100 100 2011 2
李四 1000 150 100 2011 2
SQL>