关于查询距离最近的时间记录!

小_强 2008-06-04 03:28:59
Road表 CollectInfo表
RaodID RoadLine RoadPart CollectID RoadID PCI DR CollectTime CollectDate CollectState
1 连霍高速 宝鸡——西安 1 1 0 0 14:01:02 2008-3-3 已采集
2 连霍高速 西安——渭南 2 2 0 0 16:59:15 2008-3-13 已采集
3 连霍高速 渭南——潼关 3 3 22 .065 17:49:09 2008-3-11 已采集
4 西兰高速 西安——兰田 4 4 55 .249 17:51:27 2008-3-20 已采集
5 西汉高速 汉中——勉县 5 5 0 0 18:02:44 2008-3-5 已采集
6 西汉高速 勉县——宁强 6 6 ......
7 西延高速 延安——安塞 7 7 ......
8 西延高速 铜川——黄陵 8 8 ......
9 西延高速 延安南——延安 9 9 ......
10 西延高速 西安——铜川 10 10 ......
11 1 45 .34 16:00:30 2008-3-3 已采集
12 2 22 .17 12:00:05 2008-3-13 已采集

数据库中出现相同路段相同日期内不同时间连续N(N表中为2)次的采集记录,即CollectID为1和11,2和12这两组记录,要求输出距离最近的一条即只输出CollectID为11和2这两条,SQL语句怎么判断??
...全文
414 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tim_spac 2008-06-05
  • 打赏
  • 举报
回复
select *
from CollectInfo a
where not exists (select 1 from CollectInfo b
where a.RoadID=b.RoadID
and convert(datetime, a.CollectDate+' '+a.CollectTime)<convert(datetime, b.CollectDate+' '+b.CollectTime)
)
小_强 2008-06-04
  • 打赏
  • 举报
回复
服务器: 消息 207,级别 16,状态 3,行 1
列名 'id' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'id' 无效。

你的id <CollectInfo .id中id是什么?
sweetweiwei 2008-06-04
  • 打赏
  • 举报
回复
--试这个
select Road.RoadLine As 道路信息,Road.RoadPart As 路段信息,CollectInfo.CollectState As 检测状态,CONVERT(varchar(12),CollectDate,111) As 采集日期,CONVERT(varchar(12),CollectTime,108) As 采集时间,CollectInfo.PCI,convert(varchar(12),CollectInfo.DR*100)+'%' As DR
from Road ,CollectInfo
WHERE Road.RoadID = CollectInfo.RoadID
and not exists(select 1 from CollectInfo where roadid=CollectInfo .roadid and id <CollectInfo .id)
小_强 2008-06-04
  • 打赏
  • 举报
回复
不行出现如下错误:

服务器: 消息 107,级别 16,状态 3,行 1
列前缀 'Road' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,行 1
列前缀 'Road' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,行 1
列前缀 'CollectInfo' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,行 1
列前缀 'CollectInfo' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,行 1
列前缀 'CollectInfo' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,行 1
列前缀 'Road' 与查询中所用的表名或别名不匹配。
服务器: 消息 107,级别 16,状态 1,行 1
列前缀 'CollectInfo' 与查询中所用的表名或别名不匹配。
sweetweiwei 2008-06-04
  • 打赏
  • 举报
回复
--在not前加and
select Road.RoadLine As 道路信息,Road.RoadPart As 路段信息,CollectInfo.CollectState As 检测状态,CONVERT(varchar(12),CollectDate,111) As 采集日期,CONVERT(varchar(12),CollectTime,108) As 采集时间,CollectInfo.PCI,convert(varchar(12),CollectInfo.DR*100)+'%' As DR
from Road a,CollectInfo b
WHERE Road.RoadID = CollectInfo.RoadID
and not exists(select 1 from CollectInfo where roadid=b.roadid and id <b.id)
小_强 2008-06-04
  • 打赏
  • 举报
回复
happyflystone我测试下以后发现这样的提示:
服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'not' 附近有语法错误。
-狙击手- 2008-06-04
  • 打赏
  • 举报
回复
select Road.RoadLine As 道路信息,Road.RoadPart As 路段信息,CollectInfo.CollectState As 检测状态,CONVERT(varchar(12),CollectDate,111) As 采集日期,CONVERT(varchar(12),CollectTime,108) As 采集时间,CollectInfo.PCI,convert(varchar(12),CollectInfo.DR*100)+'%' As DR
from Road a,CollectInfo b
WHERE Road.RoadID = CollectInfo.RoadID
not exists(select 1 from CollectInfo where roadid=b.roadid and id <b.id)
小_强 2008-06-04
  • 打赏
  • 举报
回复
select Road.RoadLine As 道路信息,Road.RoadPart As 路段信息,CollectInfo.CollectState As 检测状态,CONVERT(varchar(12),CollectDate,111) As 采集日期,CONVERT(varchar(12),CollectTime,108) As 采集时间,CollectInfo.PCI,convert(varchar(12),CollectInfo.DR*100)+'%' As DR from Road,CollectInfo WHERE Road.RoadID = CollectInfo.RoadID
这句话怎么修改使得能够实现现在我要求的功能呢
-狙击手- 2008-06-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ojuju10 的回复:]
select * from collectinfo a
where not exist(select 1 from collectinfo b where a.roadid=b.roadid
and a.id <b.id )
[/Quote]
tim_spac 2008-06-04
  • 打赏
  • 举报
回复
select *
from road a
where not exists (select 1 from road b
where a.RoadLine=b.RoadLine
and convert(datetime, a.CollectDate+' '+a.CollectTime)<convert(datetime, b.CollectDate+' '+b.CollectTime)
)
ojuju10 2008-06-04
  • 打赏
  • 举报
回复

select * from collectinfo a
where not exist(select 1 from collectinfo b where a.roadid=b.roadid
and a.collectid <b.collectid )
yrwx001 2008-06-04
  • 打赏
  • 举报
回复
select * from CollectInfo A where  A.CollectID in (select top 1 B.CollectID from CollectInfo B where B.RoadId = A.RoadId order by B.CollectDate desc,B.CollectTime desc)
ojuju10 2008-06-04
  • 打赏
  • 举报
回复
select * from collectinfo a
where not exist(select 1 from collectinfo b where a.roadid=b.roadid
and a.id<b.id )

34,587

社区成员

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

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