给定以下数据:
declare @temp table(id int identity primary key, val nvarchar)
insert into @temp values (NULL)
insert into @temp values (NULL)
insert into @temp values ('A')
insert into @temp values (NULL)
insert into @temp values (NULL)
insert into @temp values ('B')
insert into @temp values ('C')
insert into @temp values (NULL)
insert into @temp values (NULL)
insert into @temp values ('A')
insert into @temp values (NULL)
insert into @temp values (NULL)
我试图得到下面的输出。需要对记录进行分组,以便每个新值组编号增加一。值本身无关紧要 - 如果存在除 NULL 之外的任何值,则会添加新的组 ID。记录必须按 ID 排序。
Id Val Group
-- --- -----
1 NULL 1
2 NULL 1
3 A 2
4 NULL 2
5 NULL 2
6 B 3
7 C 4
8 NULL 4
9 NULL 4
10 A 5
11 NULL 5
我希望使用 PARTITION BY 是解决方案,但我似乎无法让这个工作(如果确实有可能/正确的方法。我有一个使用 LOOP 的解决方案,但我宁愿使用查询。我m 使用 SQL Server 2008。感谢您的任何建议。
select id, val, row_number() over (partition by X order by id) from @temp