怎样过滤连续重复的数据呢?

mohugomohu 2012-03-03 04:55:42
ID 经度 纬度
1 116.1 36.1
2 116.2 36.1
3 116.2 36.1
4 116.2 36.1

5 116.3 36.1
6 116.2 36.1


我想要他出来
1 116.1 36.1
2 116.2 36.1
5 116.3 36.1
6 116.2 36.1
...全文
141 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

--> 测试数据:[TBL]
go
if object_id('[TBL]') is not null
drop table [TBL]
go
create table [TBL](
[ID] int,
[经度] numeric(4,1),
[纬度] numeric(3,1)
)
go
insert [TBL]
select 1,116.1,36.1 union all
select 2,116.2,36.1 union all
select 3,116.2,36.1 union all
select 4,116.2,36.1 union all
select 5,116.3,36.1 union all
select 6,116.2,36.1

;WITH T
AS
(
SELECT *,ROW_NUMBER()OVER(ORDER BY GETDATE()) AS NUM,
ROW_NUMBER()OVER(PARTITION BY [经度],[纬度] ORDER BY [ID] ) AS [ORDER]
FROM [TBL]
)
SELECT [ID],[经度],[纬度] FROM T WHERE [ORDER]=1
UNION
SELECT [ID],[经度],[纬度] FROM T WHERE ID-[ORDER]<>1

/*
ID 经度 纬度
1 116.1 36.1
2 116.2 36.1
5 116.3 36.1
6 116.2 36.1
*/

AcHerat 元老 2012-03-03
  • 打赏
  • 举报
回复
0.0 我看错了,1楼不行。


;with ach as
(
select *,rid=row_number() over (order by getdate()),
pid=row_number() over (partition by 经度,纬度 order by id)
from tb
)

select *
from ach t
where not exists (select 1 from ach where rid-pid=t.rid-t.pid and id < t.id)
AcHerat 元老 2012-03-03
  • 打赏
  • 举报
回复

select min(id) id,经度,纬度
from tb
group by 经度,纬度

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧