当前位置: 代码迷 >> Oracle开发 >> 遇到一个sql有关问题
  详细解决方案

遇到一个sql有关问题

热度:21   发布时间:2016-04-24 07:30:41.0
遇到一个sql问题,求助
表a:userid,username
表b:userid,incost,
表c:userid,outcost
现在要查出这样一个结果集:userid ,username,sum(incost),sum(outcost)
我的sql如下:
select a.userid,(a.username),sum(b.incost) as sumincost,sum(c.outcost) as sumoutcost 
from xxzx_user_zyl a,xxzx_incost b, xxzx_outcost c
where a.userid=b.userid and b.userid=c.userid 
group by a.userid,a.username

结果查出来的结果总是不对,求高人指导

------解决方案--------------------
userid是否有重复的,
这个应该用full join 吧
------解决方案--------------------
SQL code
select a.userid,       a.username,       sum(b.incost) sumincost,       sum(c.outcost) sumoutcost  from xxzx_user_zyl a,xxzx_incost b, xxzx_outcost cwhere a.userid=b.userid       and b.userid=c.userid  group by a.userid,a.username
------解决方案--------------------
SQL code
SELECT userid,username,Sum(incost) over (PARTITION BY userid,username) as incost,Sum(outcost) over (PARTITION BY userid,username) as outcost FROM xxzx_user_zyl a,xxzx_incost b, xxzx_outcost cWHERE a.userid=b.userid(+)AND a.userid=c.userid(+)
------解决方案--------------------
select a.userid, a.username, sum(b.incost) sumincost, sum(c.outcost) sumoutcost from xxzx_user_zyl a,xxzx_incost b, xxzx_outcost c where a.userid=b.userid(+) and A.userid=c.userid(+) group by a.userid,a.username
是以A表为准,进行外关联
  相关解决方案