请教一个SQL的问题

fattycat 2008-10-31 03:03:11

我现在表里有两列,数据存储形式如下:

A a1
A a2
A a3
B b1
B b2

现在我想在从数据库中读出来的时候,得到下边的形式:

A a1,a2,a3
B b1,b2


请问这句SQL应该怎么写呢?

谢谢,请指点一下
...全文
106 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiezi316 2008-10-31
  • 打赏
  • 举报
回复
这种事情我宁愿用C#来处理,(*^__^*) 嘻嘻……。
kfps8kfps8 2008-10-31
  • 打赏
  • 举报
回复
行列转换,4楼正解
wonture 2008-10-31
  • 打赏
  • 举报
回复
行列转换,4楼已经实现。
lovehongyun 2008-10-31
  • 打赏
  • 举报
回复
自己写个function处理一下.

4楼正解
wxg22526451 2008-10-31
  • 打赏
  • 举报
回复
--> Test Data: T
create table T([name] varchar(1),[value] varchar(2))
insert into T
select 'A','a1' union all
select 'A','a2' union all
select 'A','a3' union all
select 'B','b1' union all
select 'B','b2'

--select * from T
go
--Code

--SQL2000用函数
create function f_str
(@a varchar(10))
returns varchar(100)
as
begin
declare @s varchar(100)
select @s = isnull(@s + ',' ,'') +value from T where name = @a
return @s
end
go

select distinct [name],[value]=dbo.f_str([name])
from T


--SQL2005用XML
select distinct [name],
[value]=STUFF((select ','+[value] from T where [name]=A.[name] for XML path('')),1,1,'')
FROM T A group by [name]
--Drop
drop table T
drop function f_str
--Result
/*
name value
---- --------------------------------------------------
A a1,a2,a3
B b1,b2
*/
wxg22526451 2008-10-31
  • 打赏
  • 举报
回复
--> Test Data: @T
declare @T table ([name] varchar(1),[value] varchar(2))
insert into @T
select 'A','a1' union all
select 'A','a2' union all
select 'A','a3' union all
select 'B','b1' union all
select 'B','b2'

--select * from @T
--Code
--SQL2005用XML
select [name],
[value]=STUFF((select ','+[value] from @T where [name]=A.[name] for XML path('')),1,1,'')
FROM @T A group by [name]

--Result
/*
name value
---- --------------------------------------------------
A a1,a2,a3
B b1,b2
*/
yezeguo 2008-10-31
  • 打赏
  • 举报
回复
关注中
xuexiziji 2008-10-31
  • 打赏
  • 举报
回复
去 数据库区问吧。那里sql高手多。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧