欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请问一查询语句写法

更新时间: 2014-05-18 07:44:15 责任编辑: Author_N8

 

请教一查询语句写法
表结构:
create   table   TBL_TEST   (TID   VARCHAR2(2),   NM     VARCHAR2(2))
表数据:
insert   into   TBL_TEST2   (TID,   NM)   values   ( '1 ',   'a ');
insert   into   TBL_TEST2   (TID,   NM)   values   ( '2 ',   'b ');
insert   into   TBL_TEST2   (TID,   NM)   values   ( '3 ',   'c ');
insert   into   TBL_TEST2   (TID,   NM)   values   ( '1 ',   'd ');
即为:
TID NM
1 a
2 b
3 c
1 d
----------------------
现在想要得出下面的集合该怎么写:
TID NM
1 ad
2 b
3 c
----------------------
即:按TID分类,如果TID一样则num列字符串并在一起(不是sum)
注:TID、NM中的值是不固定的
我想了半天想不出来,只好找大家帮忙了

--参考方法--
CREATE OR REPLACE function link(v_id varchar2)
return varchar2
is
union_nm varchar2(200);
begin
for cur in (select nm from TBL_TEST where tid=v_id) loop
union_nm := union_nm||cur.nm;
end loop;
union_nm := rtrim(union_nm,1);
return union_nm;
end;
///
select tid,link(tid) from tbl_test group by tid
--参考方法--
select tid, replace(max(sys_connect_by_path(nm, ', ')), ', ', ' ') from
(SELECT tid, nm, MIN(nm) over(PARTITION BY tid) minnm
,(row_number() over(ORDER BY tid, nm)) + (dense_rank() over(ORDER BY tid)) no
FROM ttt)
start with nm=minnm
connect by no-1 = prior no
group by tid
--参考方法--
使用这个sys_connect_by_path就可以了
--参考方法--
具体范例参照:
http://hitc.blogdriver.com/hitc/465373.html
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-05-18 07:44:15
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/883947/
本文WWW.DOC100.NET DOC100.NET版权所有。