列转行的SQL语句

lovehong123 2010-11-23 12:44:05
现在有一个数列,如下:
PageSize
9
1
8
其中9代表是A4纸型 ,1代表B5纸型,8代表A3纸型
我想经过转换后的效果
PageSize
9,1,8
这个效果如何实现,非常感谢大侠
...全文
156 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangfeng275265586 2010-12-30
  • 打赏
  • 举报
回复
zhangfeng275265586 2010-12-30
  • 打赏
  • 举报
回复
DataBox-MDX 2010-12-18
  • 打赏
  • 举报
回复
1L正解

SELECT STUFF((SELECT ','+ PageSize FROM TB FOR XML PATH('')),1,1,'') AS PageSize
idonot 2010-12-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dawugui 的回复:]

SQL code
/*如何将一列中所有的值一行显示
数据源
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……
[/Quote]

我就是用方法1的 :)
dawugui 2010-11-24
  • 打赏
  • 举报
回复
/*如何将一列中所有的值一行显示
数据源
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
*/

drop table tb
hello926 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dlut_liuq 的回复:]
SQL code
SELECT STUFF((SELECT ','+ PageSize FROM TB FOR XML PATH('')),1,1,'') AS PageSize



不好意思多了个WHERE
[/Quote]

MARK
nice_dream_li 2010-11-24
  • 打赏
  • 举报
回复

SELECT STUFF(REPLACE(REPLACE((SELECT pagesize FROM tb FOR XML AUTO),'<tb pagesize="',','),'"/>',''),1,1,'')
中国风 2010-11-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dlut_liuq 的回复:]

SQL code
SELECT STUFF((SELECT ','+ PageSize FROM TB WHERE FOR XML PATH('')),1,1,'') AS PageSize
[/Quote]
--1樓加上 rtrim(PageSize)
沒有","時不用加,字符和數據相同需要轉換
飘零一叶 2010-11-23
  • 打赏
  • 举报
回复
SELECT STUFF((SELECT ','+ PageSize FROM TB FOR XML PATH('')),1,1,'') AS PageSize


不好意思多了个WHERE
中国风 2010-11-23
  • 打赏
  • 举报
回复
declare @s nvarchar(2000)
select @s=isnull(@s+',','')+rtrim(PageSize) from Tab
select @s as PageSize
飘零一叶 2010-11-23
  • 打赏
  • 举报
回复
SELECT STUFF((SELECT ','+ PageSize FROM TB WHERE FOR XML PATH('')),1,1,'') AS PageSize
中国风 2010-11-23
  • 打赏
  • 举报
回复
use Tempdb
go
--> -->

if not object_id(N'Tempdb..#') is null
drop table #
Go
Create table #([PageSize] int)
Insert #
select 9 union all
select 1 union all
select 8
Go
declare @s nvarchar(2000)
select @s=isnull(@s+',','')+rtrim(PageSize) from # select @s as PageSize
/*
9,1,8
*/
lovehong123 2010-11-23
  • 打赏
  • 举报
回复
出现问题啦!!!!!
刚开始是
PageSize
1
9
经过
[Quote=引用 2 楼 roy_88 的回复:]
SQL code
declare @s nvarchar(2000)
select @s=isnull(@s+',','')+rtrim(PageSize) from Tab
select @s as PageSize
[/Quote]
处理后成了
PageSize
9,9
我想要得到
PageSize
1,9

594

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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