Group chunck of rows
Group chunck of rows.
Last updated:
Warning: Review and test in a non-production environment before running.
create table a(id int identity(1,1), val int);
insert into a values (0),(0),(0),(1),(0),(0),(0),(0),(3),(0),(0),(7),(0),(0),(0);
select * from a;
WITH Delims AS (
SELECT
id,
val as DelimRowID
FROM a
WHERE val <> 0
),
Data AS (
SELECT
t.*,d.DelimRowID,
ROW_NUMBER() OVER(PARTITION BY t.id ORDER BY d.DelimRowID) AS RowNo
FROM a t LEFT JOIN Delims d
ON t.id <= d.ID
)
SELECT
id,
DelimRowID AS groupid,
val
FROM Data
WHERE RowNo = 1;