• 博客访问: 75329
  • 博文数量: 13
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-03 17:19
个人简介

暂无介绍

文章分类

全部博文(13)

文章存档

2011年(1)

2009年(2)

2008年(3)

2007年(7)

我的朋友

分类: Linux操作系统

2008-04-09 10:29:37

http://www.ningoo.net/html/2008/how_to_do_string_aggregate_on_oracle.html#more-326

今天在这里看到一个非常好的方式。使用wmsys.wm_concat() package来进行处理。非常方便。

直接从ningoo那里copy过来,以作为以后查询使用

假如有如下表,其中各个i值对应的行数是不定的

SQL> select * from t;

         I A          D
---------- ---------- -------------------
         1 b          2008-03-27 10:55:42
         1 a          2008-03-27 10:55:46
         1 d          2008-03-27 10:55:30
         2 z          2008-03-27 10:55:55
         2 t          2008-03-27 10:55:59

要获得如下结果,注意字符串需要按照D列的时间排序:

1  d,b,a
2  z,t

 
 
SQL> select i,wmsys.wm_concat(a)
  2  from
  3  (select * from t order by i,d)
  4  group by i;

         I WMSYS.WM_CONCAT(A)
---------- --------------------
         1 d,b,a
         2 z,t

执行计划上看,只需要做一次表扫描就可以了,但是这个函数是加密过的,执行计划并不能显示函数内部的操作。

阅读(1641) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~

zflying20002008-04-09 11:07:20

上面说错了。wmsys.wm_concat 是一个函数。而非一个package

评论热议
请登录后评论。

登录 注册