求一非常规SQL语句

ykwang 2011-10-28 08:26:20
假设 TABLE1 表,记录如下。
A字段
1
2
3

有三条记录,如何使用SQL语句实现如下效果:
A字段
1/2/3

就是把三条记录并为一条记录,中间使用/隔开。 谢谢
...全文
54 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-10-28
  • 打赏
  • 举报
回复
----------------------------------------------------
/*如何将一列中所有的值一行显示
数据源
a
b
c
d
e
结果
a,b,c,d,e
*/

create table tb(col varchar(20))
insert tb values ('a')
insert tb values ('b')
insert tb values ('c')
insert tb values ('d')
insert tb values ('e')
go

--方法一
declare @sql varchar(1000)
set @sql = ''
select @sql = @sql + t.col + ',' from (select col from tb) as t
set @sql='select result = ''' + left(@sql , len(@sql) - 1) + ''''
exec(@sql)
/*
result
----------
a,b,c,d,e,
*/

--方法二
declare @output varchar(8000)
select @output = coalesce(@output + ',' , '') + col from tb
print @output
/*
a,b,c,d,e
*/

---方法三
declare @s varchar(1000)
select @s=isnull(@s+',' , '')+col from tb
select @s
/*
a,b,c,d,e
*/

drop table tb


-------------
中国风 2011-10-28
  • 打赏
  • 举报
回复
或用xml

use Tempdb
go
--> -->

declare @T table([A] int)
Insert @T
select 1 union all
select 2 union all
select 3

SELECT STUFF((Select '/'+RTRIM([A]) from @T FOR XML PATH('')),1,1,'')
/*
1/2/3*/
中国风 2011-10-28
  • 打赏
  • 举报
回复
declare @s nvarchar(max)
select @s=isnull(@s+'/','')+rtrim(A) from table1
print @s
中国风 2011-10-28
  • 打赏
  • 举报
回复
declare @s nvarchar(max)
select @s=isnull(@s+'/','')+A from table1
print @s

22,301

社区成员

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

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