写给快二十三岁的自己:求一条SQL语句

来源:百度文库 编辑:高考问答 时间:2024/04/30 14:15:03
求一条SQL语句

车间工资表:
员工编号 工龄奖
零工表:
员工编号 工龄奖
1001 20
1002 10
工序表:
员工编号 工龄奖
1001 21
1003 5
我想把零工表和工序表的对应员工编号的工龄奖汇总插入到车间工资表里,不知如何写?

INSERT INTO [车间工资表] ([员工编号] , [工龄奖])
SELECT 员工编号 , SUM(工龄奖)
FROM
(
SELECT 员工编号 , 工龄奖 FROM [零工表]
UNION
SELECT 员工编号 , 工龄奖 FROM [工序表]
)
TEMP_TABLE
GROUP BY 员工编号

INSERT 车间工资表
(员工编号, 工龄奖)
SELECT a.员工编号, a.工龄奖
FROM (
SELECT * FROM 零工表
UNION
SELECT * FROM 工序表
) AS a
----------------------------------
如果原先你的车间工资表里就有数据,
在FROM的括号中再加上
UNION SELECT * FROM 车间工资表
----------------------------------
注意:
1、三个表之间的统一和兼容。
2、UNION自动消重,不需要写DISTINCT
----------------------------------

你的意思 是
1001 41
1002 10
1003 5
insert into 车间工资表 (员工编号,工龄奖 ) select 零工表.员工编号, 工龄奖 as (select sum(工龄奖) from 零工表, 工序表 where 工序表.员工编号= 零工表。员工编号 ) from 零工表, 工序表 where 工序表.员工编号= 零工表。员工编号

update 车间工资表
set 工龄奖=(select sum(零工表.工龄奖,工序表.工龄奖)
from 零工表,工序表 where 工序表.员工编号= 零工表.员工编号)
where 车间工资表.员工编号= 零工表.员工编号

你试试这个,我记不清了。

insert into 车间工资表 select a.员工编号,(isnull(a.工龄奖,0)+isnull(b.工龄奖,0))as 工龄奖 from 零工表 a full join 工序表 b on a.员工编号=b.员工编号

insert into 车间工资表
(员工编号,工龄奖)
select 员工编号,工龄奖
from 零工表 INNER JOIN 工序表 ON 零工表.员工编号=工序表.员工编号