Oracle 多行连接成一行 convert multiple rows to one row

animal

id  name

1   dog

1   cat

2  lion

怎么得到相同id的name list呢?也就是想得到id 为1的list为dog, cat格式。

1. 首先Oracle有一个方法,wm_concat()

select a.id

, wm_concat(a.name) as namelist

from animal a

group by a.id

但很遗憾,这个方法现在已经不support了.

2. 第二个方法XMLAGG()

select a.id

, (rtrim(xmlagg(xmlelement("xml"

, a.name||‘, ‘)

order by a.id).extract (‘//text()‘)

,‘, ‘)) as namelist

from animal a

group by a.id;

3. LISTAGG()

这个方法有些版本不支持,比如我的电脑和学校的。。

下面是官方用法:

SELECT department_id "Dept.",
       LISTAGG(last_name, ‘; ‘) WITHIN GROUP (ORDER BY hire_date) "Employees"
  FROM employees
  GROUP BY department_id
  ORDER BY department_id;
时间: 2024-11-06 23:38:58

Oracle 多行连接成一行 convert multiple rows to one row的相关文章

oracle多行合并成一行

在mysql有关键字group_concat提供了类似的功能,在oracle中类似功能关键字是wm_concat.比如我有如下查询数据: 但是我希望能够显示成一行查询出来,结果图如下: 关键sql代码形如: select t.sglcheckid,wm_concat(t.salemodulename) from t_item_group_ex t where t.sglcheckid = '000********004' group by t.sglcheckid mysql 多行合并成一行的解

ORACLE 多列合并成一行数据 WM_CONCAT函数以及REPLACE

SELECT ( --SELECT REPLACE(SBPT.PARKSTIME||'~'||SBPT.PARKETIME,',') REPLACE也可以 SELECT WM_CONCAT(SBPT.PARKSTIME||'~'||SBPT.PARKETIME) SAREE FROM SYS_BERTHANDTYPE SBT LEFT JOIN SYS_BERTHTYPEPARKTIME SBPT ON SBT.BERTHTYPEID = SBPT.BERTHTYPEID WHERE BERTH

mysql 和sqlserver的 多行合并成一行

mysql  多行合并: mysql 内置函数 group_concat(exper  SEPARATOR " " ) exper:列明 SEPARATOR " ": 行分隔符 ,这里表示的是使用空格分隔多行 mysql> select * from tmp_02 ; +------------+---------+ | Fclient    | ct      | +------------+---------+ | 安卓       | 1858799 |

mysql 行变列(多行变成一行/多行合并成一行/多行合并成多列/合并行)

数据库结构如图: 而我想让同一个人的不同成绩变成此人在这一行不同列上显示出来,此时分为2中展现: 第一种展现如图----[多行变一列](合并后的数据在同一列上): sql如下: select name ,group_concat(sore Separator ';') as score from stu group by name 第二种展现如图----[多行变多列](合并后的数据在不同列上): sql如下: SELECT name , MAX(CASE type WHEN '数学' THEN

SQL 多行拼成一行 (3种解决方案)

运行环境 (sql 2000, 2005, 2008, 2014 ), 其中,最后一种方法 专为sql 2000提供. 原数据: (5 行受影响) UserID RoleName RoleID ----------- ---------- -------- 2014000 developer 1 2014000 product 2 2014001 developer 1 2014002 developer 1 2014002 sales 3 期望结果: UserID NewRoleName Ne

linux 将多行合并成一行

把a.txt里面的第3-6行内容复制到b.txt里面的第7行 sed -i "7i`sed -n "3,6p" a.txt |xargs`" b.txt

SQL查询多行合并成一行

问题描述:无论是在sql 2000,还是在 sql 2005 中,都没有提供字符串的聚合函数,  所以,当我们在处理下列要求时,会比较麻烦:有表tb, 如下:id    value----- ------1     aa1     bb2     aaa2     bbb2     ccc需要得到结果:id     values------ -----------1      aa,bb2      aaa,bbb,ccc即, group by id, 求 value 的和(字符串相加) 1.

logstash收集java日志,多行合并成一行

使用codec的multiline插件实现多行匹配,这是一个可以将多行进行合并的插件,而且可以使用what指定将匹配到的行与前面的行合并还是和后面的行合并. 1.java日志收集测试 input { stdin { codec => multiline { pattern => "^\[" //以"["开头进行正则匹配 negate => true //正则匹配成功 what => "previous" //和前面的内容进

SQL多行合并成一行

with cte as( select groupname,GroupId from Sys_Group where GroupId in( select ReleaseRangeId from Sys_Notice_Permission where ReleaseRangeType=2 and NoticeId=20)) select LEFT(groupname,LEN(groupname)-1) as groupname, LEFT(GroupId,LEN(GroupId)-1) as G