sql group by 之后 如何合并分组的文本
例如:姓名内容1小名在家2小名上网3小名睡觉4小名看书5小王上班6小王吃饭7小王打球8王强看电视9王强玩游戏合并后姓名内容1小名在家上网睡觉看书2小王上班吃饭打球3王强看...
例如:
姓名 内容
1 小名 在家
2 小名 上网
3 小名 睡觉
4 小名 看书
5 小王 上班
6 小王 吃饭
7 小王 打球
8 王强 看电视
9 王强 玩游戏
合并后
姓名 内容
1 小名 在家上网睡觉看书
2 小王 上班吃饭打球
3 王强 看电视玩游戏
谢谢 展开
姓名 内容
1 小名 在家
2 小名 上网
3 小名 睡觉
4 小名 看书
5 小王 上班
6 小王 吃饭
7 小王 打球
8 王强 看电视
9 王强 玩游戏
合并后
姓名 内容
1 小名 在家上网睡觉看书
2 小王 上班吃饭打球
3 王强 看电视玩游戏
谢谢 展开
展开全部
db2 / oracle /sql server 2005以上,可以这样做
SELECT 姓名,
MAX(CASE RK WHEN 1 THEN 内容 ELSE '' END)
||MAX(CASE RK WHEN 2 THEN 内亮搏容 ELSE '' END)
||MAX(CASE RK WHEN 3 THEN 内容 ELSE '' END)
||MAX(CASE RK WHEN 4 THEN 内容 ELSE '' END)
FROM (SELECT 姓敬此祥名, 内容扒棚,
ROW_NUMBER() OVER(PARTITION BY 姓名 ORDER BY 内容) rk FROM tab) t
GROUP BY 姓名
SELECT 姓名,
MAX(CASE RK WHEN 1 THEN 内容 ELSE '' END)
||MAX(CASE RK WHEN 2 THEN 内亮搏容 ELSE '' END)
||MAX(CASE RK WHEN 3 THEN 内容 ELSE '' END)
||MAX(CASE RK WHEN 4 THEN 内容 ELSE '' END)
FROM (SELECT 姓敬此祥名, 内容扒棚,
ROW_NUMBER() OVER(PARTITION BY 姓名 ORDER BY 内容) rk FROM tab) t
GROUP BY 姓名
展开全部
一,如果是sql2000,只有用自定义函数
create function dbo.f_str(@name int) returns varchar(100)
as
begin
declare @str varchar(1000)
set @str = ''
select @str = @str + cast(内容 as varchar) from 表名 where id = @name set @str = right(@str , len(@str) - 1)
return @str
end
go
--调用函数
select 姓名 , 内逗举容 = dbo.f_str(姓名) from 表名 group by 姓名
drop function dbo.f_str
二,如果是sql2005,那么:
select 姓散山名, [内容] = stuff((select [内容] from 表名 t where 姓名 = 表名.姓名 for xml path('')) , 1 , 1 , ''山掘碧)
from 表名 group by 姓名
create function dbo.f_str(@name int) returns varchar(100)
as
begin
declare @str varchar(1000)
set @str = ''
select @str = @str + cast(内容 as varchar) from 表名 where id = @name set @str = right(@str , len(@str) - 1)
return @str
end
go
--调用函数
select 姓名 , 内逗举容 = dbo.f_str(姓名) from 表名 group by 姓名
drop function dbo.f_str
二,如果是sql2005,那么:
select 姓散山名, [内容] = stuff((select [内容] from 表名 t where 姓名 = 表名.姓名 for xml path('')) , 1 , 1 , ''山掘碧)
from 表名 group by 姓名
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
立迟辩的视图才能实现你要求的效果
以下为例子:
--(1)建立辅助统计的函数f_un,这里假设订单号字段类型为varchar
create function f_un(@name varchar(255),@color varchar(255))
returns varchar(8000)
as
begin
declare @s varchar(8000)
declare @link varchar(255)
set @s = ''
set @link = ' '--这里是连接中族单号的字符,按你的要求设置为空格
--组合字符串
select @s = @s +订单号+@link from dingdan_tb where 名称 = @name and 颜色 = @color
--处理多余的@link
set @s = left(@s,len(@s) - len(@link))
--返回结果
return @s
end
--(2)以上是函数,创建上述函数f_un后,用以下语句创建视图
select dbo.f_un(名称,颜色卖旦弊) as 订单号, 名称, 颜色, sum(订单数量) as 订单数量
from dingdan_tb
group by 名称, 颜色
以下为例子:
--(1)建立辅助统计的函数f_un,这里假设订单号字段类型为varchar
create function f_un(@name varchar(255),@color varchar(255))
returns varchar(8000)
as
begin
declare @s varchar(8000)
declare @link varchar(255)
set @s = ''
set @link = ' '--这里是连接中族单号的字符,按你的要求设置为空格
--组合字符串
select @s = @s +订单号+@link from dingdan_tb where 名称 = @name and 颜色 = @color
--处理多余的@link
set @s = left(@s,len(@s) - len(@link))
--返回结果
return @s
end
--(2)以上是函数,创建上述函数f_un后,用以下语句创建视图
select dbo.f_un(名称,颜色卖旦弊) as 订单号, 名称, 颜色, sum(订单数量) as 订单数量
from dingdan_tb
group by 名称, 颜色
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select distinct name,(select 内容 as [text()] from test where name=a.name order by id for xml path('')) 内容没胡让枯局做物
from test a
from test a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
--测试通过团神的神铅代码游或好
Declare
L_join Varchar2(500);
Begin
For RecH In(Select Distinct Name From test)
Loop
For Rec in(Select trim(memo) memo
From test
Where Name = RecH.Name)
Loop
L_join := L_join||Rec.Memo;
End Loop;
dbms_output.put_line(RecH.name||' '||L_join);
L_join := Null;
End Loop;
End;
Declare
L_join Varchar2(500);
Begin
For RecH In(Select Distinct Name From test)
Loop
For Rec in(Select trim(memo) memo
From test
Where Name = RecH.Name)
Loop
L_join := L_join||Rec.Memo;
End Loop;
dbms_output.put_line(RecH.name||' '||L_join);
L_join := Null;
End Loop;
End;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询