永发信息网

oracle 中用sql求和问题

答案:4  悬赏:50  手机版
解决时间 2021-03-22 14:19
  • 提问者网友:我的未来我做主
  • 2021-03-22 11:16
表结构是这样,A,B字段为数字,C为varchar
A B C
1 2 aaa
1 5 bbb
2 3 ccc
现在想用一个sql对整个表求和
得到结果为
A B C
4 10 aaa,bbb,ccc
各位大侠帮忙啊!!急!!只能用一个sql
最佳答案
  • 五星知识达人网友:底特律间谍
  • 2021-03-22 12:50
select sum(a) as A,sum(b) AS B,wmsys.wm_concat(c) AS C from table
全部回答
  • 1楼网友:你可爱的野爹
  • 2021-03-22 14:17
结果都是正确。只是你写的语句没有发达到你想要的效果而已。 你写了三个sql我叫它们sql1,sql2,sql3好了。sql1里面并没有把t2表和t1、t3表关联起来。如果t2和t1、t3不存在什么关系的话,你只能用sql2,sql3分开查询,最后嵌套一个select 把它们二个字查询的结果加起来。 你看看 select sum(decode(a.real_type,'g',1,0)) from t1 a,t2 c,t3 d where c.status=1 and a.agent_id=d.itemid and d.status=1; 和 select sum(decode(a.real_type,'g',1,0)) from t1 a,t3 d where a.agent_id=d.itemid and d.status=1; 的结果有什么不一样?我想你可以想到一些东西。 前面的语句中t2 c表和t1 a,t3 d 没有关联。只有一个c.status=1 。也就是说他们没有什么关系。你把他放到一起结果就是他们的笛卡尔积。 拿你这20分可以让我气的吐血,用个嵌套不就出来了吗?!!!!最后一次回答了。 select sum(a1) ( select sum(decode(a.real_type, 'g', 1, 0)) as a1, from t1 a, t3 d where a.agent_id = d.itemid and d.status = 1; union all select sum(decode(c.real_type, 'g', 1, 0)) as a1, from t2 c where c.status = 1 ); 有空多看看一些有关数据库的理论方面的东西。
  • 2楼网友:动情书生
  • 2021-03-22 13:09
先写一个function,处理varchar字段的,然后在SUM(数字字段)
  • 3楼网友:持酒劝斜阳
  • 2021-03-22 13:02
一个sql不可能的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯