当前位置: 代码迷 >> Sql Server >> Sql中怎么实现连续相同的数据只取第一条
  详细解决方案

Sql中怎么实现连续相同的数据只取第一条

热度:44   发布时间:2016-04-27 14:46:38.0
Sql中如何实现连续相同的数据只取第一条
例如:
Key Name Flag
1 1001 0
2 1002 1
3 1003 0
4 1004 0
5 1005 1
6 1006 1
7 1007 0
8 1008 0
9 1009 0
10 1010 1
11 1011 1
12 1012 1

希望的结果是
Key Name Flag
1 1001 0
3 1003 0
7 1007 0
谢谢


------解决方案--------------------
SQL code
select * from tabname awhere not exists (select 1 from tabname bwhere b.key = a.key - 1and b.flag = 0)and a.flag = 0
------解决方案--------------------
SQL code
create table tab(Keys int, name int, Flag int)insert into tabselect 1, 1001, 0 union allselect 2, 1002, 1 union allselect 3, 1003, 0 union allselect 4, 1004, 0 union allselect 5, 1005, 1 union allselect 6, 1006, 1 union allselect 7, 1007, 0 union allselect 8, 1008, 0 union allselect 9, 1009, 0 union allselect 10, 1010, 1 union allselect 11, 1011, 1 union allselect 12, 1012, 1with pl as(select Keys,name,Flag,keys-row_number() over(order by Keys) rnfrom tab where Flag=0)select * from tab where keys in(select min(Keys)from pl group by rn)Keys        name        Flag----------- ----------- -----------1           1001        03           1003        07           1007        0(3 row(s) affected)
  相关解决方案