add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE test (id INTEGER NOT NULL PRIMARY KEY, flag INTEGER NOT NULL);
INSERT INTO test(flag) VALUES
(0),(0),(1),(0),(1),(0),(1);
SELECT * FROM test;
id flag
1 0
2 0
3 1
4 0
5 1
6 0
7 1
SELECT id id1, CASE WHEN flag THEN next END id2
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY flag ORDER BY id) rn,
MIN(CASE WHEN flag THEN id END) OVER (ORDER BY id ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING) next
FROM test
)
WHERE flag = 0 OR rn % 2 = 1
ORDER BY id1
id1 id2
1 null
2 null
3 5
4 null
6 null
7 null