Rising Sun
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
148 随笔 :: 0 文章 :: 22 评论 :: 0 Trackbacks
<
2007年9月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(10)
给我留言
查看公开留言
查看私人留言
随笔分类
cpp(3)
(rss)
css(6)
(rss)
hibernate+struts+spring(3)
(rss)
javascript(9)
(rss)
Lucene(3)
(rss)
oracle 数据库(6)
(rss)
云计算(4)
(rss)
其它(6)
(rss)
处理Excel poi(6)
(rss)
学习总结(15)
(rss)
环境设置(2)
(rss)
随笔档案
2015年1月 (3)
2014年12月 (1)
2014年9月 (1)
2014年6月 (2)
2014年4月 (2)
2014年1月 (2)
2013年12月 (3)
2013年11月 (1)
2013年10月 (2)
2013年8月 (2)
2013年7月 (3)
2013年5月 (3)
2013年3月 (9)
2013年2月 (8)
2013年1月 (4)
2012年10月 (1)
2012年9月 (2)
2012年8月 (1)
2012年7月 (3)
2012年5月 (1)
2012年1月 (1)
2011年3月 (1)
2010年12月 (1)
2009年12月 (1)
2009年10月 (1)
2009年8月 (4)
2009年7月 (3)
2009年6月 (2)
2009年5月 (2)
2009年4月 (3)
2008年11月 (3)
2008年10月 (2)
2008年9月 (1)
2008年8月 (2)
2008年7月 (3)
2008年5月 (1)
2007年11月 (1)
2007年10月 (2)
2007年9月 (2)
2007年8月 (3)
2007年7月 (6)
2007年6月 (3)
2007年4月 (2)
2006年12月 (2)
2006年11月 (1)
2006年10月 (2)
2006年9月 (3)
2006年8月 (3)
2006年7月 (26)
2005年11月 (4)
相册
我的相册
java--->ajax
BlueDavy
http://www.blogjava.net/BlueDavy/
css
css
eamoi
搜索
最新评论
1. re: request.getParameterValues与request.getParameter的区别:
5+5+
--5465
2. re: 关于filter验证用户权限
333
--12
3. re: Gson通过借助TypeToken获取泛型参数的类型的方法
博主如果解决了楼上的问题 请联系我 万分感谢 联系方式QQ 474233979
--yueguangxuanyuan
4. re: Gson通过借助TypeToken获取泛型参数的类型的方法
评论内容较长,点击标题查看
--yueguangxuanyuan
5. re: CMS,全称Concurrent Low Pause Collector gc[未登录]
很有用。非常感谢!!!!
--匿名
阅读排行榜
1. Gson通过借助TypeToken获取泛型参数的类型的方法(42668)
2. 304 Not Modified状态码(18896)
3. 电脑非法关机 导致ORA-01033:解决方法(9080)
4. struts2 -- interceptor(如何配置Interceptor) (7511)
5. MYSQL在默认的情况下查询是不区分大小写的(7340)
评论排行榜
1. Gson通过借助TypeToken获取泛型参数的类型的方法(6)
2. Busy Developers' Guide to HSSF Features (说明书)(3)
3. 对于网上看到Window.Open()传值(3)
4. excel 处理 Poi(1)
5. 关于filter验证用户权限(1)
高手指教:我想将某一个字段的值并成一个字符串,该怎么做呢? (转)
问?:
表:
col1 col2 col3
A
1.5
a
A
1.5
b
A
2.5
c
A
2.5
d
B
5.5
e
B
5.5
f
B
1.2
g
C
1.2
h
A
1.2
i
A
1.1
j
我想取得这样的结果:
A
1.5
a,b
A
2.5
c,d
A
1.1
J
A
1.2
i
B
5.5
e,f
C
1.2
h
也就是按col1、col2分组统计,将col3的值用“,”连接起来。
其中col1 是 字符型 col2是数字型。这两个字段的唯一值的个数是未知的
不知该如何才能做到,请各位高手帮忙。
答!:
1
:
id name
1
aa
2
bb
3
cc
4
dd
1
ee
1
xxx
ID相同的行只显示一条记录并把相同ID的NAME加起来用,隔开
怎么搞
???
我需要的结果集是:
id name
1
aa,ee,xxx
2
bb
3
cc
4
dd
---------------------------------
假设你的table 是 tmp_1;
--------------------------------------------
create table tmp_2 as select
*
from tmp_1 where
1
=
2
;
insert into tmp_2 select distinct id,
null
from tmp_1;
declare
i number(
4
);
cursor c_v is select
*
from ttmp_1;
begin
for
v_n in c loop
select count(
*
) into i from ttmp_2 b where b.name is not
null
and b.id
=
v_n.id;
if
i
=
0
then
update ttmp_2 a set name
=
v_n.name where a.id
=
v_n.id;
else
update ttmp_2 a set name
=
name
||
'
,
'
||
v_n.name where a.id
=
v_n.id;
end
if
;
end loop;
end;
/
------------------------------------
或许以下的更有帮助
给你看看duanzilin (寻)的文章吧,一个强贴,地址忘记了,还好有保存
主 题: 原创+突发奇想+分享+散分-----关于分组后字段拼接的问题
作 者: duanzilin (寻)
信 誉 值:
120
所属论坛: Oracle 基础和管理
问题点数:
200
回复次数:
29
发表时间:
2005
-
7
-
22
11
:
52
:
56
最近在论坛上,经常会看到关于分组后字段拼接的问题,
大概是类似下列的情形:
SQL
>
select no,q from test
2
/
NO Q
----------
------------------------------
001
n1
001
n2
001
n3
001
n4
001
n5
002
m1
003
t1
003
t2
003
t3
003
t4
003
t5
003
t6
12
rows selected
最后要得到类似于如下的结果:
001
n1;n2;n3;n4;n5
002
m1
003
t1;t2;t3;t4;t5;t6
通常大家都认为这类问题无法用一句SQL解决,本来我也这么认为,可是今天无意中突然有了灵感,原来是可以这么做的:
前几天有人提到过sys_connect_by_path的用法,我想这里是不是也能用到这个方法,如果能做到的话,不用函数或存贮过程也可以做到了;要用到sys_connect_by_path,首先要自己构建树型的结构,并且树的每个分支都是单根的,例如1
-
〉
2
-
〉
3
-
〉
4
,不会存在1
-
〉
2
,
1
-
〉3的情况;
我是这么构建树,很简单的,看下面的结果就会知道了:
SQL
>
select no,q,rn,lead(rn) over(partition by no order by rn) rn1
2
from (select no,q,row_number() over(order by no,q desc) rn from test)
3
/
NO Q RN RN1
----------
------------------------------
----------
----------
001
n5
1
2
001
n4
2
3
001
n3
3
4
001
n2
4
5
001
n1
5
002
m1
6
003
t6
7
8
003
t5
8
9
003
t4
9
10
003
t3
10
11
003
t2
11
12
003
t1
12
12
rows selected
有了这个树型的结构,接下来的事就好办了,只要取出拥有全路径的那个path,问题就解决了,先看no
=
‘
001
’的分组:
select no,sys_connect_by_path(q,
'
;
'
) result from
(select no,q,rn,lead(rn) over(partition by no order by rn) rn1
from (select no,q,row_number() over(order by no,q desc) rn from test)
)
start with no
=
'
001
'
and rn1 is
null
connect by rn1
=
prior rn
SQL
>
6
/
NO RESULT
----------
--------------------------------------------------------------------------------
001
;n1
001
;n1;n2
001
;n1;n2;n3
001
;n1;n2;n3;n4
001
;n1;n2;n3;n4;n5
上面结果的最后1条就是我们要得结果了
要得到每组的结果,可以下面这样
select t.
*
,
(
select max(sys_connect_by_path(q,
'
;
'
)) result from
(select no,q,rn,lead(rn) over(partition by no order by rn) rn1
from (select no,q,row_number() over(order by no,q desc) rn from test)
)
start with no
=
t.no and rn1 is
null
connect by rn1
=
prior rn
) value
from (select distinct no from test) t
SQL
>
10
/
NO VALUE
----------
--------------------------------------------------------------------------------
001
;n1;n2;n3;n4;n5
002
;m1
003
;t1;t2;t3;t4;t5;t6
对上面结果稍加处理就可以了,希望对大家有帮助:)
答!:
2
:
注意注意
sys_connect_by_path有长度限制,不能超过4K
posted on 2007-09-13 10:14
brock
阅读(542)
评论(0)
编辑
收藏
所属分类:
oracle 数据库
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
电脑非法关机 导致ORA-01033:解决方法
底层连接资源的访问问题
ORA-01000: 超出打开游标的最大数 问题的分析和解决
Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数 转载
高手指教:我想将某一个字段的值并成一个字符串,该怎么做呢? (转)
oracle imp/exp 说明
Powered by:
BlogJava
Copyright © brock