求1SQL语句。难!

renaski 2005-02-24 10:08:23
use pubs
go
declare @ss nvarchar(4000)
set @ss = ''
select top 5 @ss = @ss +' ' + convert(nvarchar(4000),job_id) from jobs
select stuff(@ss,1,1,'') as 结果


我现在想得到的结果是
1 2 3 4 5
6 7 8 9 10
11 12 13 14
就是每隔5个数据换一行,前5个数据合并成1个字段。

谢谢!
...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
renaski 2005-03-05
  • 打赏
  • 举报
回复
up
renaski 2005-02-25
  • 打赏
  • 举报
回复
...
xieye 2005-02-24
  • 打赏
  • 举报
回复
还是用个临时表吧:

use pubs
go
declare @ss nvarchar(4000)
declare @tt nvarchar(4000)
set @ss=''

declare @i int
set @i=1

declare cur_ss cursor for
select job_id from jobs

create table #tmp (结果 nvarchar(4000))

open cur_ss
fetch next from cur_ss into @tt

while @@fetch_status=0
begin
while @i<=5
begin
set @ss = @ss +' ' + @tt
fetch next from cur_ss into @tt
if @@fetch_status<>0 break
set @i=@i+1
end

insert into #tmp values(stuff(@ss,1,1,''))

set @i=1
set @ss=''
end


close cur_ss
deallocate cur_ss

select * from #tmp

drop table #tmp
xieye 2005-02-24
  • 打赏
  • 举报
回复
一个笨办法,呵呵

use pubs
go
declare @ss nvarchar(4000)
declare @tt nvarchar(4000)
set @ss=''

declare @i int
set @i=1

declare cur_ss cursor for
select job_id from jobs

open cur_ss
fetch next from cur_ss into @tt

while @@fetch_status=0
begin
while @i<=5
begin
set @ss = @ss +' ' + @tt
fetch next from cur_ss into @tt
if @@fetch_status<>0 break
set @i=@i+1
end

select stuff(@ss,1,1,'') as 结果

set @i=1
set @ss=''
end


close cur_ss

deallocate cur_ss
renaski 2005-02-24
  • 打赏
  • 举报
回复
后面的数据,每5个合并成1个字段
现在的结果是1 2 3 4 5
想要的是
1 2 3 4 5
6 7 8 9 10
11 12 13 14
xieye 2005-02-24
  • 打赏
  • 举报
回复
有点不明白,前5个数据合并成一个字段,后面的数据怎么处理?

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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