关于Oracle,在一行中个别字段多行显示。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Oracle,在一行中个别字段多行显示。相关的知识,希望对你有一定的参考价值。
id number name
1 10 a
1 10 b
1 20 a
2 20 b
3 10 a
4 40 c
4 40 d
4 30 e
执行完SQL完要求输出结果如下:
id name
1 a,b
2 b
3 a
4 c,d,e
4
Oracle数据库是9i的,忘了说了。八级的那位朋友对不住了,呵呵。没有最后那一行,就是只有4那一行。表名字就叫test吧,其实无所谓,主要是为了学习这个查询的方法。能详细点最好。我的Oracle水平不高,如果能解释下你所写的步骤和原理更好。
from (SELECT id, name,
dense_rank() OVER(PARTITION BY id ORDER BY id,name) RN
FROM people ) t
start with rn = 1
connect by rn = prior rn + 1 and id = prior id
group by id
把原来我写的回答里的row_number()换成dense_rank()就行了,开窗函数,也就是over(),中的order by id,name,原来只按id排的序 参考技术A
select * from test;
select t.id, max(t.a)
from (select id, wm_concat(name) over(partition by id) a
from (select distinct id, name from test)) t
group by t.id;
表结构和你提提供的一模一样,我用的是oracle 10g 我不知道9i 可以不
参考技术B ID不可以重复的哦! 你要查name值为c,d,e你可以要 in(id)查询 里面写你要查询的ID 参考技术C 导入的时候,对于字符串有没有指定“”这样的包括符?时间类型的导入的时候有没有指定时间字段的格式?很有可能是你导入的DATETIME字段没有指定格式,toad就按默认格式导入,结果有不匹配的。
导入的时候,看一下那些选项,重新调整一下应该就可以了
包括字段分隔符
ORACLE——将多行文本数据转换成一行
前几天项目中有个到处文件的功能,但是有一个字段存进的数据存在换行情况,导出来的数据会出现错乱的情况,所以需要把换行的数据转换成一行。当然也可以在java程序中实现。
数据库中的数据为:
SQL> SELECT A.ADDRESS FROM T_USER_INFO A WHERE A.ID=‘001‘; ADDRESS -------------------------------------------------------------------------------- 上海市 宝山区 同济路
在ORACLE中使用SQL实现换行的方式为:
SQL> SELECT REPLACE(REPLACE(A.ADDRESS, CHR(TO_NUMBER(‘0A‘, ‘xx‘)), ‘‘), CHR(TO_NUMBER(‘0D‘, ‘xx‘)),‘‘) ADDRESS FROM T_USER_INFO A WHERE A.ID=‘001‘; ADDRESS -------------------------------------------------------------------------------- 上海市宝山区同济路
以上是关于关于Oracle,在一行中个别字段多行显示。的主要内容,如果未能解决你的问题,请参考以下文章