oracle sql问题,有两张表A,B 多对多,B有一属性name:a_1,a_2,b_1,b_2,c_1,c_2。 两张表关联查询。

以B表name分组统计记录数,如何实现a_1,a_2为一组(A表中记录就算这一组a的两个都对应也只算一条,一下同),b_1,b_2一组,c_1,c_2一组(如果一条A表记... 以B表name分组统计记录数,如何实现a_1,a_2为一组(A表中记录就算这一组a的两个都对应也只算一条,一下同),b_1,b_2一组,c_1,c_2一组(如果一条A表记录对应一个a_1和b_1算两条)。怎么实现这样的实现呢,求指导,解决问题加分。 展开
 我来答
badkano
2013-05-14 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885366
团长

向TA提问 私信TA
展开全部
没太听明白呀,是不是这样
select sum(case when b.name in ('a_1','a_2') then 1 else 0) as a,
sum(case when b.name in ('b_1','b_2') then 1 else 0) as b,
sum(case when b.name in ('c_1','c_2') then 1 else 0) as c
from a,b where a.关联字段=b.关联字段
更多追问追答
追问
谢谢您的回答,本身是多对多关系,比如A表有一条数据,B表中有三条对应,name 分别是a_1,a_2,b_1.  我其实是想以a,b,c三种类型(实际表中不存在的这种关系)分组,这样时,a组下面count为1,b组下面count为1,c组count为0. 你上面的统计应该没有去掉这种组内重复呢。
追答
那就把你想分组的name写到同一个in里就OK吧?

你说的组内重复是什么意思,没懂呀
射手幽灵伊
2013-05-14 · TA获得超过2716个赞
知道大有可为答主
回答量:4955
采纳率:81%
帮助的人:1964万
展开全部
先建立一个字段,把 a_1,a_2更新为一个值,把b_1,b_2更新为一个值,
然后使用这个字段做分组,就可以了吧。

如果是a_1,a_2,b_1,b_2这样的,也可以 select left(name,2) 作为一个虚拟字段,然后用这个虚拟字段作分组。
追问
谢谢您的回答,实际名字有些不同呢,请问下虚拟字段怎么搞呢?
追答
select v from ( select left(name,2) as v from table ) a
group by v
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-05-14
展开全部
SELECT
SUBSTR(name, 1, INSTR (name, '_') -1 ),
SUM () / COUNT() ...... 相关函数
FROM
B JOIN A ON ( 关联条件 )
GROUP BY
SUBSTR(name, 1, INSTR (name, '_') -1 )
追问
谢谢您的回答,能详细点吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式