使用一条SQL能试以下效果么?

囡程序猿 2022-09-20 10:32:52

 

 一个结果内,如果中间返回到低级目标前面的都回到低级目标,类似于接火车游戏

...全文
111 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
雨夹雪 2022-09-24
  • 打赏
  • 举报
回复

CREATE  TABLE #t
(
    id INT ,
    目标 INT, 
    实现目标 INT 
)

INSERT INTO #T(id,目标) VALUES(1,1)
INSERT INTO #T(id,目标) VALUES(2,1)
INSERT INTO #T(id,目标) VALUES(3,2)
INSERT INTO #T(id,目标) VALUES(4,2)
INSERT INTO #T(id,目标) VALUES(5,2)
INSERT INTO #T(id,目标) VALUES(6,3)
INSERT INTO #T(id,目标) VALUES(7,3)
INSERT INTO #T(id,目标) VALUES(8,1)
INSERT INTO #T(id,目标) VALUES(9,1)
INSERT INTO #T(id,目标) VALUES(10,2)
INSERT INTO #T(id,目标) VALUES(11,2)
INSERT INTO #T(id,目标) VALUES(12,4)
INSERT INTO #T(id,目标) VALUES(13,3)
INSERT INTO #T(id,目标) VALUES(14,2)
INSERT INTO #T(id,目标) VALUES(15,2)
INSERT INTO #T(id,目标) VALUES(16,2)
INSERT INTO #T(id,目标) VALUES(17,2)
INSERT INTO #T(id,目标) VALUES(18,2)
INSERT INTO #T(id,目标) VALUES(19,3)
INSERT INTO #T(id,目标) VALUES(20,4)
INSERT INTO #T(id,目标) VALUES(21,2)
INSERT INTO #T(id,目标) VALUES(22,3)
 


DECLARE @ma INT,@mi int 
DECLARE @目标 INT 
DECLARE @i INT =1
SELECT @目标=目标  FROM #t WHERE id=1
WHILE @@ROWCOUNT<>0
BEGIN 
    SELECT @mi=MIN(id),@ma=MAX(id)  FROM #t  WHERE 目标=@目标 AND 实现目标 IS NULL 
    UPDATE #t SET 实现目标=@i WHERE id BETWEEN @mi AND @ma
    
    SET @i=@i+1
    
    SELECT TOP 1 @目标=目标  FROM #t 
    WHERE 实现目标 IS NULL
    ORDER BY id 
END 

SELECT *  FROM #t 

DROP TABLE #t

 
雨夹雪 2022-09-21
  • 打赏
  • 举报
回复

不用一条SQL可以不

囡程序猿 2022-09-23
  • 举报
回复
@雨夹雪 也可以呀
猫狸嘎 2022-09-20
  • 打赏
  • 举报
回复

看不懂,建议贴出初始表,和想要实现的效果

34,590

社区成员

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

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