Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算旅行距离的sql查询_C#_Sql - Fatal编程技术网

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;