您好,UncleToo欢迎您!  为了更好的浏览本站,请使用高版本浏览器
RSS  Tag     设为首页 | 加入收藏
 您所在的位置:首页 > 数据库技术 > Oracle

Oracle 利用Listagg函数将两行/多行合并成一行

作者:UncleToo  来源:原创  日期:2014-03-13 8:31:14
收藏  评论:( 0 )  阅读:3558

在网上看到很多网友都在问Oracle中如何合并行的问题,例如有这样一张表:

FID    FType   FName

1       DB      MySQL

1       DB      Oracle


现在我们需要得到以下结果:

FID    FType   FName

1       DB      MySQL,Oracle


这个查询结果其实很好实现,在Oracle 11g中为我们提供了Listagg函数,下面就是查询语句:

SELECT FID, FType,LISTAGG(FName, ‘,’) WITHIN GROUP (ORDER BY FName) AS FName
FROM TABLENAME
GROUP BY FID


这种写法并不适合Oracle 10g,因为在10g版本中没有Listagg函数,但是我们可以通过其他办法实现:

WITH Q AS
(
SELECT FID key, FName X FROM <table_name>
)
SELECT KEY,
RTRIM(
XMLAGG (XMLELEMENT(e, x||’, ‘) ORDER BY x).EXTRACT(‘//text()’)
) AS concatval
FROM q
GROUP BY KEY




除非特别声明,本站所有PHP教程及其他教程/文章均为原创、翻译或网友投稿,版权均归UncleToo中文网所有, 转载请注明作者及出处。
原文网址:http://www.uncletoo.com/html/oracle/850.html
读完这篇文章后,你是否有所收获? 分享是一种生活的信念!
  • 0
  • 0
我来说两句
更多>>网友评论