首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

一个查询语句。解决马上结贴。解决方法

2012-02-02 
一个查询语句。解决马上结贴。有一个主表 TableA一个子表TableBTableA列:GroupATableB列:GroupAMessage数据

一个查询语句。解决马上结贴。
有一个主表 TableA
一个子表 TableB

TableA 列:
GroupA

TableB 列:
GroupA  
Message

数据我写2个,表TableA
ItemA
表TableB
ItemA, MessageA
ItemA, MessageB
现在通过主表关联子表,我想得到如下结果,
ItemA MessageA,MessageB
就是子表中的内容,分组后,用,分隔得到结果。

[解决办法]
--wm_concat()函数用法
with tb as (
select '王' name,'数学' course, 11 type, '2011-11-30 18:11:00' time from dual union all
select '王' , '数学', 11, '2011-11-30 18:11:00' from dual union all
select '王' , '语文', 12, '2011-10-30 18:11:00' from dual union all
select '张' , '数学', 11, '2011-11-30 18:11:00' from dual 


select tt.name, wm_concat(tt.km), wm_concat(tt.sj)
from (
select name,
to_char(course),
to_char(t.a) as km,
to_char(type) || '/' || to_char(to_date(time,'yyyy-mm-dd hh24:mi:ss'), 'mm.dd') as sj
from (select name, course, count(1) a, time, type
from tb
group by name,course,time,type) t
) tt
 group by tt.name
[解决办法]
关联的话

SQL code
select b.groupa,WMSYS.WM_CONCAT(message) as messages from tableb b join tablea a on b.groupa = a.groupa group by b.groupa;
[解决办法]
探讨

关联的话
SQL code

select b.groupa,WMSYS.WM_CONCAT(message) as messages from tableb b join tablea a on b.groupa = a.groupa group by b.groupa;

[解决办法]
上面 符号写反了 
SQL code
with tableb as ( select 'ItemA' as groupa,'MessageA' as message from dual union  select 'ItemA' as groupa,'MessageB' as message from dual   union  select 'ItemB' as groupa,'Messagec' as message from dual)select groupa,substr(max(sys_connect_by_path(message,',')),2)  as message  from (select a.*,row_number()over(partition by groupa order by message) rn from tableb a )  group by groupastart with rn=1  connect by rn-1=prior rn and groupa=prior groupa    order by 1 

热点排行