指定查询开始点,并循环显示一定数量的记录SQL语句怎么写?

那片夕阳 2023-01-07 11:40:36

表:tb(id,name,startpoint),表中数据如下:

id      name      stratpoint
1     小明            0
2     王磊            0
3     张飞            1
4     高峰            0

假如数据表中有4条记录,从规定的循环记录开始点,怎么将这4条记录循环显示出7条记录?然后将结束的那条记录对应的startpoint值设定成1,其余的都是0; 

如上表所示,循环开始点是startpoint值为1的记录(即 id为3的记录),想要的结果如下:

id     name     stratpoint
3      张飞          0
4      高峰          0
1      小明          0
2      王磊          0
3      张飞          0
4      高峰          0
1      小明          1

感谢版主!!!

...全文
50 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 版主 01-09
  • 打赏
  • 举报
回复

img

二月十六 版主 01-09
  • 打赏
  • 举报
回复

 
--测试数据
if not object_id(N'tab') is null
    drop table tab
Go
Create table tab([id] nvarchar(22),[name] nvarchar(22),stratpoint INT)
Insert tab
select N'01',N'小明',0 union all
select N'02',N'王磊',0 union all
select N'03',N'张飞',1 union all
select N'04',N'高峰',0
Go
--测试数据结束
SELECT id,
       t.NAME,
       CASE WHEN number=6 THEN 1 ELSE 0 END stratpoint
FROM
(SELECT *, ROW_NUMBER() OVER (ORDER BY stratpoint DESC) rn FROM tab) t
    JOIN master..spt_values
        ON type = 'P'
           AND number <= 6
           AND (number % 4 + 1) = rn;
相关推荐
发帖
MS-SQL Server

3.4w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2023-01-07 11:40
社区公告
暂无公告