sql row_number重置为0值

Jam*_*ers 1 sql sql-server sql-server-2008

我有一个包含以下值的表:

Value
0
1.2
1.3
1.4
0
1.2
1.3
1.4
Run Code Online (Sandbox Code Playgroud)

从上面的数据中,我需要将设置重置为0后的2个最高数字相加,从而得到总数2.8.

如果我每次有0都可以让row_number()重新启动,那将是完美的,但它不提供这样的功能.

谢谢.

Mar*_*ith 6

DECLARE @your_table TABLE (id INT,value FLOAT) 

INSERT INTO @your_table
SELECT 1,0 UNION ALL
SELECT 2,1.2 UNION ALL
SELECT 3,1.3 UNION ALL
SELECT 4,1.4 UNION ALL
SELECT 5,0 UNION ALL
SELECT 6,1.2 UNION ALL
SELECT 7,1.3 UNION ALL
SELECT 8,1.4


;WITH T AS
(
SELECT 
   ROW_NUMBER() OVER (PARTITION BY CASE WHEN value = 0 THEN 0 ELSE 1 END ORDER BY id)-
   ROW_NUMBER() OVER (ORDER BY id ) AS Grp
,id,value
FROM @your_table
), T2 AS
(
SELECT MAX(value) AS value
FROM T
WHERE value<>0
GROUP BY Grp)
SELECT SUM(value)
FROM T2
Run Code Online (Sandbox Code Playgroud)