【发布时间】:2019-01-25 09:39:24
【问题描述】:
我需要使用value <> z 增加所有下一行的组号。 z 意味着根据b 的所有下一行将具有相同的组号。
CREATE TABLE #tmp
(
a CHAR(1)
, b INT
);
INSERT INTO #tmp (a
, b)
VALUES ('a', 1)
, ('b', 2)
, ('z', 3)
, ('c', 4)
, ('z', 5)
, ('z', 6)
, ('d', 7);
SELECT t.a
, t.b
, SUM(v.is_z) OVER (ORDER BY t.b ROWS UNBOUNDED PRECEDING) - ROW_NUMBER() OVER (ORDER BY t.b) group_nbr
FROM #tmp AS t
CROSS APPLY (SELECT CASE WHEN a = 'z' THEN 2 ELSE 1 END AS is_z) AS v
ORDER BY 2;
DROP TABLE #tmp;
在我的查询中,组从值为z 的行开始递增,但我需要为下一行开始递增。
预期输出:
【问题讨论】:
-
'下一步'根据什么(b)?
-
是的。修改了问题。
标签: sql sql-server