求一条SQL语句:比较复杂的3表查询并更新到另外一个表中!
表A
user usermoney userzone useraddress userviocemoney
表B
user usermoney userzone cardnum
张 100 北京 1000005
王 100 郑州 2000005
张 100 北京 1000006
王 100 郑州 2000006
表C
user useraddress userviocemoney
张 西直门 30
张 西直门 40
张 西直门 30
王 人民路 10
王 人民路 20
王 人民路 30
我要的结果应该如下:
表A
user usermoney userzone useraddress userviocemoney
张 100 北京 西直门 100(30+40+30)
王 100 郑州 人民路 60 (10+20+30)
------解决方案--------------------insert into A
select t1.*,t2.useraddress,t2.userviocemoney from
(select distinct user,usermoney,userzone from b) t1,
(select user,useraddress,sum(userviocemoney) userviocemoney from c group by user,useraddress) t2
where t1.user = t2.user
------解决方案--------------------insert A
select D.user,E.usermoney,E.userzone,D.useraddress,D.userviocemoney from
(
select distinct user,usermoney,userzone from B
)E,
(
select user,useraddress,userviocemoney=sum(userviocemoney)from C group by user,useraddress
)D
where E.user = D.user
------解决方案--------------------create table A([user] varchar(10),usermoney int,userzone varchar(10),useraddress varchar(10),userviocemoney int)
create table B([user] varchar(10),usermoney int,userzone varchar(10),cardnum varchar(10))
insert into B values( '张 ', 100, '北京 ', '1000005 ')
insert into B values( '王 ', 100, '郑州 ', '2000005 ')
insert into B values( '张 ', 100, '北京 ', '1000006 ')
insert into B values( '王 ', 100, '郑州 ', '2000006 ')
create table C([user] varchar(10),useraddress varchar(10),userviocemoney int)
insert into C values( '张 ', '西直门 ', 30)
insert into C values( '张 ', '西直门 ', 40)
insert into C values( '张 ', '西直门 ', 30)
insert into C values( '王 ', '人民路 ', 10)
insert into C values( '王 ', '人民路 ', 20)
insert into C values( '王 ', '人民路 ', 30)
go
insert into A
select t1.*,t2.useraddres