C# 计算旅行距离的sql查询
我有一个类似表的车辆和位置C# 计算旅行距离的sql查询,c#,sql,C#,Sql,我有一个类似表的车辆和位置 time | odo _______ 4:00 | 10 5:00 | 20 6:00 | 30 7:00 | 60 8:00 | 80 我还有一张表,上面的表中列出了时间/odo存在的车辆列表 所以我需要从vehicleList_表中选择一辆车,并在上表中进行一些连接 因此,如果我从vehicleList_表中查询每辆车的开始和结束时间,我希望得到以下结果: 开始时间4:00和结束时间7:00: 这是我需要数据集的w
time | odo
_______
4:00 | 10
5:00 | 20
6:00 | 30
7:00 | 60
8:00 | 80
我还有一张表,上面的表中列出了时间/odo存在的车辆列表
所以我需要从vehicleList_表中选择一辆车,并在上表中进行一些连接
因此,如果我从vehicleList_表中查询每辆车的开始和结束时间,我希望得到以下结果:
开始时间4:00和结束时间7:00:
这是我需要数据集的wt,因为我想在gridview中显示上述输出
是否可以为上述内容编写一个查询,或者我是否需要依赖c代码,在c代码中,我已经从检索到的记录中进行了手动计算,尽管加载到gridview很复杂。您只需使用一个查询即可:
SELECT
MIN(time) AS StartTime,
MAX(time) AS EndTime,
MAX(odo) - MIN(odo) AS distanceTravelled
FROM tablename
WHERE time BETWEEN '4:00'
AND '8:00';
更新:
对于更新问题后要查找的输出:
连接两个表,并添加WHERE子句,这将为您提供每辆车的开始时间、结束时间和行驶距离,分组方式为:
这将为您提供如下信息:
| VEHICLE | STARTTIME | ENDTIME | TRAVELLED |
---------------------------------------------
| MH01k11 | 4:00 | 7:00 | 50 |
| MHooooo | 4:00 | 7:00 | 50 |
如果您只需要对特定车辆执行此操作,请在WHERE条款中添加此操作
我还假设了列名称和表之间的关系,因为您没有提供它们之间的相互关系,您可能需要修复列名称。如果您想计算@Starttime和@Endtime之间的距离,那么您可以这样做:
Select @Starttime startTime,@Endtime Endtime,Max(odo)-Min(odo)
From YourTable
Where time Between @Starttime And @Endtime
@向下投票人:请为向下投票添加评论。这个解决方案对我来说似乎是正确的。@Mahmoud Gamal,你这个超级敏捷的人!!!如果我在b/w中有时间间隔,比如说5:00和7:00,可能是时间>=5:00和@user1944477,你想这样做更多的时间间隔吗?请使用您在本例中寻找的预期结果集更新您的问题。您使用的是SQL Server、MySQL还是什么RDBMS?@Mahmoud有办法从另一个表中获取车辆名称,并有一个where time start And End And vehicleName=从vehInfo_选项卡中选择不同的vehName猜我需要做一个选择吗JOIN@user1944477这就是我的问题所在,车辆名称来自vehiclelist_表,时间来自locations表,如果您愿意,还可以加入更多表。请随时使用表结构和所需的输出再次更新您的问题/:能否在查询中替换值?我的理解是,在where子句中,我们必须写出这样的值“where time介于'4:00'和'8:00'之间”。因此,在选择它将如何识别@starttime和@endtime时,我不认为“4:00”和“8:00”之间的时间在这里可以有静态时间。Starttime和Endtime将是时间范围,应该传递给查询以计算距离。因此,如果您可以为查询提供值,以便我可以了解一些新内容,那就太好了。@ken yes对于在between子句中指定datetime作为变量,是否可以传递值,例如where time>='2012-06-18 04:00:00 AM'和time Please编辑文章时查看预览。您刚刚破坏了其他用户的编辑。请看一看Yeh,这就是为什么我给了你们降价帮助的链接。若并没有GroupBy,你们将如何获得vehiclename和聚合函数?
| VEHICLE | STARTTIME | ENDTIME | TRAVELLED |
---------------------------------------------
| MH01k11 | 4:00 | 7:00 | 50 |
| MHooooo | 4:00 | 7:00 | 50 |
Select @Starttime startTime,@Endtime Endtime,Max(odo)-Min(odo)
From YourTable
Where time Between @Starttime And @Endtime
SELECT
vt.vehiclename as VehicleName
MIN(ot.time) AS StartTime,
MAX(ot.time) AS EndTime,
MAX(ot.odo) - MIN(ot.odo) AS distanceTravelled
FROM vehicleTable vt, othertable ot
where vt.vehicleid=ot.vehicleid
ot.time between time1 and time2
group by vt.vehiclename;