注册 登录
编程论坛 SQL Server论坛

大家帮忙下 一个数据更新问题

absentlyh 发布于 2010-07-18 21:33, 798 次点击
有两个表
表一
证号               姓名     费用1  费用2     费用3
5220107020024    罗幸莲    NULL    NULL    NULL
5220107020024    罗利    NULL    NULL    NULL
5220112060003    黄菊凤    NULL    NULL    NULL
5220201210012    左甲初    NULL    NULL    NULL
表2
证号               姓名     费用1  费用2     费用3
5220107020024    罗幸莲    2    3    4
5220107020024    罗利    8    5    78
5220107020024    罗幸莲    4    7    56
5220107020024    罗幸莲    23    34    3
5220201210012    左甲初    4    78    2
  
 请大家帮忙写个更新语句把表2中的  证号和姓名相同的 费用总和 更新到表1相应中   谢谢了
6 回复
#2
licomak2010-07-19 09:58
update 表1 set 费用1=表2.费用1,费用2=表2.费用2,费用3=表2.费用3 from 表1,表2
where 表1.证号=表2.证号 and 表1.姓名=表2.姓名
#3
jksu2010-07-19 12:06
update 表1 set 费用1 =(select sum(费用1) from 表2 where 表1.证号= 表2.证号 and 表1.姓名= 表2.姓名 group by 证号,姓名),费用2= ......以此类推
#4
happynight2010-07-19 13:58
UPDATE 表1 SET 表1.费用1=a.费用1,表1.费用2=a.费用2,表1.费用3=a.费用3
FROM (SELECT 证号,姓名,SUM(费用1) 费用1,SUM(费用2) 费用2,SUM(费用3) 费用3
      FROM 表2 GROUP BY 证号,姓名) a
WHERE 表1.证号=a.证号 AND  表1.姓名=a.姓名
#5
cnfarer2010-07-19 19:33
4楼正解,3楼效率太低
#6
jiang119582010-07-20 15:18
证件号本来就是和姓名对应的

update  表1
set 费用1=(select sum(费用1) from 表2
           group by 证号)

set 费用2=(select sum(费用2) from 表2
           group by 证号)

set 费用3=(select sum(费用3) from 表2
           group by 证号)
#7
dearwolf41282010-07-21 11:16
先创建新表,然后使用insert into 新表 select sum(费用1),sum(费用2), sum(费用3),  from 表2 group by 证号(desc),姓名
                   update 表1(费用1,费用2, 费用3)  select 费用1,费用2, 费用3,  from 新表 where 新表.id=表1.id and 新表.姓名=表1.姓名
                   删除新表 drop 新表;
1