0

私は車や場所のようなテーブルを持っています

time   |  odo
_______
4:00   |   10

5:00   |   20

6:00   |  30

7:00   |  60

8:00   |  80

上記の表にtime/odoが存在する車両のリストを含む別の表があるので、1台の車両を選択vehicleList_tableして、上記の表に参加する必要があります。

したがってvehicleList_table、開始時刻と開始時刻から各車両を照会すると、次の結果が得られると思います。

starttime4:00とendtime7:00と言う:

___
vehicle  |  startTime  |  endTime  |  distanceTravelled
____
MH01k11   4:00        |     7:00     |      50   (i.e 60-10)
___

これは、データセットに必要なものです。グリッドビューに上記の出力を表示したいので、上記のクエリを記述できますか、それとも、取得したレコードから手動で計算したc#コードに依存する必要がありますか? gridviewにロードするのは複雑

4

3 に答える 3

1

これは、単一のクエリを使用して簡単に実行できます。

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';

SQL フィドルのデモ


アップデート:

質問を更新した後に探している出力について:

JOIN2 つのテーブルにWHERE節を追加すると、 が得られ、starttime車両ごとに:EndTimedistanceTravelledGROUP BY

SELECT
  v.vehicle,
  MIN(l.time) AS StartTime,
  MAX(l.time) AS EndTime,
  MAX(l.odo) - MIN(l.odo) AS travelled
FROM vehiclelist_table AS v
INNER JOIN locations as l ON v.vehicle_id = l.vehicle_id
WHERE l.time BETWEEN '4:00' AND '7:00'
GROUP BY v.vehicle;

更新された SQL Fiddle デモ

これにより、次のような結果が得られます。

| VEHICLE | STARTTIME | ENDTIME | TRAVELLED |
---------------------------------------------
| MH01k11 |      4:00 |    7:00 |        50 |
| MHooooo |      4:00 |    7:00 |        50 |

特定の車両に対してのみこれを行う必要がある場合は、それをWHERE句に追加します。

また、列名とテーブルの関係を想定しました。それらが互いにどのように関連しているかを提供しなかったため、列の名前を修正する必要があるかもしれません。

于 2013-03-16T06:24:10.083 に答える
0

@Starttimeと@Endtimeの間の距離を計算する場合は、次のように実行できます。

Select @Starttime startTime,@Endtime Endtime,Max(odo)-Min(odo)
From YourTable
Where time Between @Starttime And @Endtime
于 2013-03-16T06:32:39.593 に答える
0
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;
于 2013-03-16T06:46:21.780 に答える