1

次のクエリを実行することにより(私は使用していますOracle 11g

SELECT EVENTARCHIVE.VEHID vehicle
      , to_char(EVENTARCHIVE.EVENTTIME, 'Dy DD-Mon-YYYY  HH24:MI:SS') occured_on
      , EVENTARCHIVE.EVENTDESCR description
FROM EVENTARCHIVE
     , (SELECT POX
               , POY
               , AREARAD 
        FROM POINTOBJECTS
        WHERE POID = 'PB') PO
WHERE POWER(X - PO.POX, 2) + POWER(Y - PO.POY, 2) < POWER(PO.AREARAD, 2) 
AND   EVENTARCHIVE.EVENTGROUP = 2

このようなデータセットを取得しています

vehicle | occred_on   | description
017     | .. 08:35:12 | stopped moving
021     | .. 09:40:00 | stopped moving
021     | .. 10:00:00 | started moving

ご覧のとおり、21 番目の車両の停止時間を示す 2 つのステータスがあります。停止時間は 20 分でした。stop.mvこれはフラグとフラグの間の最小スパンstarted.mvです。

これに合わせて改革したい

vehicle | stopped_moving | started_moving
021     | .. 09:40:00    | .. 10:00:00

どうすればいいですか?ありがとう!

4

3 に答える 3

0

あなたはこのようなことをすることができます、

select min(occred_on) stopped_moving,max(occred_on) started_moving
from table group by vehicle;

これが役立つことを願って、

SELECT EVENTARCHIVE.VEHID vehicle
      , min(to_char(EVENTARCHIVE.EVENTTIME, 'Dy DD-Mon-YYYY  HH24:MI:SS')) stopped_moving,
        max(to_char(EVENTARCHIVE.EVENTTIME, 'Dy DD-Mon-YYYY  HH24:MI:SS')) started_moving,
      , EVENTARCHIVE.EVENTDESCR description
FROM EVENTARCHIVE
     , (SELECT POX
               , POY
               , AREARAD 
        FROM POINTOBJECTS
        WHERE POID = 'PB') PO
WHERE POWER(X - PO.POX, 2) + POWER(Y - PO.POY, 2) < POWER(PO.AREARAD, 2) 
AND   EVENTARCHIVE.EVENTGROUP = 2 group by vehicle
于 2012-12-24T09:37:38.387 に答える