• 首页
  • SQL
  • SQL Server、MySQL和 Oracle的行合并

SQL Server、MySQL和 Oracle的行合并

发布:kayser|时间:2019年1月30日|评论:0人|浏览:

多行一列数据合并成一行一列数据

在MySQL和Oracle中实现行合并 

SQL Server

--SQL2005中的方法2 
create table tb(id int, value varchar(10)) 
insert into tb values(1'aa'
insert into tb values(1'bb'
insert into tb values(2'aaa'
insert into tb values(2'bbb'
insert into tb values(2'ccc'
go 

select id, [values]=stuff((select ','+[value] from tb t where id=tb.id 
for xml path('')), 11''
from tb 
group by id 

/* 
id          values 
----------- -------------------- 
1          aa,bb 
2          aaa,bbb,ccc 

(2 row(s) affected) 

*/ 

drop table tb 



MySQL

select name , group_concat(email order by email separator ", ") as email from student group by name



Oracle

如果以上效果想在Oracle中显示, 则比较复杂点了, 因为Oracle中没有行合并函数, 则需要使用sys_connect_by_path()来实现, 代码如下:
select name, ltrim(sys_connect_by_path(email,','),',') email from(
select name,email,
row_number() 
over(partition by name order by email) rn,
count(*over(partition by name) cnt
from student 
where level = cnt
start 
with rn = 1
connect 
by prior name = name and prior rn + 1 = rn 


原创文章请注明转载自绿茶加糖-郭保升,本文地址:https://www.guobaosheng.com/view.asp?id=382

  • 评论
  • 隐藏评论
网友评论0

我要点评

  
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

相关文章