表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)
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)
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
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 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)
goinsert 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]select * from Adrop table A,B,C/*
user usermoney userzone useraddress userviocemoney
---------- ----------- ---------- ----------- --------------
王 100 郑州 人民路 60
张 100 北京 西直门 100
(所影响的行数为 2 行)
*/
from 表B a join 表C b
on a.user=b.user
group by a.a.user,a.usermoney,a.userzone,b.useraddress
select a.*,b.useraddress,b.userviocemoney from
(select [user],usermoney,userzone from 表B group by [user],usermoney,userzone) a
join
(select [user],useraddress,userviocemoney=sum(userviocemoney) from 表C group by [user],useraddress) b
on a.[user]=b.[user]