为了账号安全,请及时绑定邮箱和手机立即绑定

求各位大神解答

老师的最后一讲的答案是什么啊,有点迷茫......

正在回答

5 回答

select c.ci_id,max(x)

from

(select a.ci_id,wm_concat(case when instr(a.stu_ids,b.stu_id)> 0 then b.stu_name

end ) over(partition BY  a.ci_id order by b.stu_id)x

from pm_ci a,pm_stu b)c

group by c.ci_id



0 回复 有任何疑惑可以回复我~

但是这个wm_concat没有排序怎么处理的


0 回复 有任何疑惑可以回复我~
#1

立志成为Oracle大神的男人

select c.ci_id,max(x) from (select a.ci_id,wm_concat(case when instr(a.stu_ids,b.stu_id)> 0 then b.stu_name end ) over(partition BY a.ci_id order by b.stu_id)x from pm_ci a,pm_stu b)c group by c.ci_id;
2016-06-04 回复 有任何疑惑可以回复我~

select ci.ci_id,to_char(wm_concat(stu.stu_name)) STU_NAME

from pm_ci ci, PM_STU stu

where instr(ci.stu_ids,stu.stu_id) > 0 

group by ci.ci_id


1 回复 有任何疑惑可以回复我~

精简:

SELECT c.ci_id ,wm_concat(s.stu_name)  
  FROM pm_ci c , pm_stu s 
  WHERE INSTR(c.stu_ids,s.stu_id)>0
  GROUP BY c.ci_id;

得到的结果是一样的。

4 回复 有任何疑惑可以回复我~

第一步:利用instr为条件,多表连接查询。

SELECT c.ci_id,s.stu_name FROM pm_ci c,pm_stu s WHERE instr(c.stu_ids,s.stu_id)!=0;

运行结果:

CI_ID  STU_NAME

1         张三

1         李四

1         王五

1         赵六

2         张三

2         赵六


第二步:利用 wn_concat() 函数 和 GROUP BY  重新组合字段

SELECT c.ci_id,WM_CONCAT(c.stu_name)
 FROM(SELECT c.ci_id,s.stu_name 
	FROM pm_ci c,pm_stu s 
        WHERE INSTR(c.stu_ids,s.stu_id)!=0) c
 GROUP BY c.CI_ID;

运行结果:

CI_ID     WM_CONCAT(C.STU_NAME)

1            张三,赵六,王五,李四

2            张三,赵六


1 回复 有任何疑惑可以回复我~
#1

changeWorld 提问者

谢谢。
2015-10-18 回复 有任何疑惑可以回复我~
#2

黄虎成

WM_CONCAT没有排序是怎么处理的
2016-02-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求各位大神解答

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信