sql将多行查询结果显示在一行用,号隔开

mamudelingling 2010-07-27 09:11:15
id Mark
1 A01
2 A02
3 A03
4 A04

查询mark行结果为 'A01,A02,A03,A04'

请问sql语句该如何写,最好是一条sql语句

分数不多了,给的少了点!
...全文
523 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
superpander 2010-07-27
  • 打赏
  • 举报
回复
declare @s varchar(1000)
select @s=isnull(@s,'')+mark+',' from tb
select substring(@s,0,len(@s))
mamudelingling 2010-07-27
  • 打赏
  • 举报
回复
可惜是sql2000的,用逗号隔开呢?
bancxc 2010-07-27
  • 打赏
  • 举报
回复
declare @s varchar(100)
select @s=isnull(','+@s,'')+mark from tb

select @s
百年树人 2010-07-27
  • 打赏
  • 举报
回复
如果是sql205及以上版本,可以这样
---测试数据---
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([id] int,[Mark] varchar(3))
insert [tb]
select 1,'A01' union all
select 2,'A02' union all
select 3,'A03' union all
select 4,'A04'

---查询---
select
stuff((select ','+mark from tb for xml path('')),1,1,'')


---结果---

----------------------------
A01,A02,A03,A04

(1 行受影响)
黄_瓜 2010-07-27
  • 打赏
  • 举报
回复
declare @s varchar(1000)
select @s=isnull(@s,'')+mark from tb
select @s
华夏小卒 2010-07-27
  • 打赏
  • 举报
回复
declare @s varchar(100)
select @s=isnull(@s+',','')+mark from tb

select @s
bancxc 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 josy 的回复:]
SQL code
declare @s varchar(1000)
select @s=isnull(@s,'')+mark from tb
select @s
[/Quote].
百年树人 2010-07-27
  • 打赏
  • 举报
回复
declare @s varchar(1000)
select @s=isnull(@s,'')+mark from tb
select @s

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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