有没有办法用一个sql实现,按ID排序后,如果连续的Value值相同,则合并成一条记录,类似于group by,但不完全去除重复值。
将如下的结果集:
ID Value
1 100
2 100
3 50
4 50
5 100
查询后为:
1 100
3 50
5 100
SELECT (SELECT MAX(id) FROM test WHERE VALUE=t.[VALUE])id, [VALUE]
FROM test t
GROUP BY
t.[VALUE]
你这个与“顺序”有关的问题,要用游标的。
只要计算一下前一个item的value 然后跟当前的item 比较, 留下不同的就好了
declare @test table (id int, val int) insert into @test values (1, 100) ,(2, 100) ,(3, 50) ,(4, 50) ,(5, 100) select base.id, base.val from ( select t.id, t.val, previousval = (select t2.val from @test t2 where t2.id = t.id -1) from @test t
) base where base.val <> base.previousval or base.previousval is null