我有一组像这样的数字
ID
===
1
2
3
1
2
1
1
2
3
4
5
...
我想选择一个新的行,当按下这个
获取下一个1时会增加ID number
=== ========
1 1
2 1
3 1
1 2
2 2
1 3
1 4
2 4
3 4
4 4
5 4
有什么建议吗?
答案 0 :(得分:0)
假设您有一个指定排序的列o
,那么您可以使用这样的自连接:
select d1.o, d1.id, count(*)
from data d1
join data d2 on d1.o >= d2.o and d2.id = 1
group by d1.o, d1.id
答案 1 :(得分:-1)
您可以使用cte和window函数解决此问题,如下所示:
DECLARE @t TABLE (ID INT);
INSERT INTO @t VALUES (1),(2),(3),(1),(2),(1),(1),(2),(3),(4),(5);
WITH cte AS(
SELECT ID, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) rn
FROM @t
),
cte1 AS(
SELECT ID, rn, ROW_NUMBER() OVER (ORDER BY rn) rn2
FROM cte
WHERE ID = 1
)
SELECT c.ID, MAX(rn2) OVER (ORDER BY c.rn) rn
FROM cte c
LEFT JOIN cte1 c1 ON c1.rn = c.rn
ORDER BY c.rn