1
私は、以下のクエリでTOPまたはLIMIT句の代わりを探しています。私はエンジンの状態が以前の値から変化したときの出力をしたい。私は初めと終わりに別のテーブルを結合するので、月の最初の値と月の最後の値を持つことができますが、これは簡単にするために下には表示されていません。基本的には、ステータスが1つの行から次の行に変わるときにレポートに表示されます。TOPまたはLIMIT句の代わりに使用しますか?
SELECT A.pointidlong
, A.pointtime
, A.value
FROM enginestatus A
WHERE A.pointidlong = 'engine1'
AND A.pointtime > Now() - 30
AND A.value <> (SELECT TOP 1 B.value
FROM enginestatus B
WHERE B.pointidlong = A.pointidlong
AND B.pointtime < A.pointtime
AND B.pointtime > Now() - 30
ORDER BY B.pointtime DESC)
ORDER BY pointidlong
, pointtime
小さいデータセットは以下のとおりです。データセットには20個のエンジンが含まれています。月あたり約180,000行
engine, PointTime, status
'engine1', '2016-02-14 15:30:00', 'RUNNING'
'engine1', '2016-02-14 15:36:00', 'RUNNING'
'engine1', '2016-02-14 15:51:00', 'RUNNING'
'engine1', '2016-02-14 16:06:00', 'STOPPED'
'engine1', '2016-02-14 16:20:00', 'RUNNING'
'engine1', '2016-02-14 16:35:00', 'RUNNING'
'engine1', '2016-02-14 16:51:00', 'RUNNING'
'engine1', '2016-02-14 17:05:00', 'STOPPED'
'engine1', '2016-02-14 17:20:00', 'RUNNING'
'engine1', '2016-02-14 17:35:00', 'STOPPED'
'engine1', '2016-02-14 17:50:00', 'RUNNING'
'engine1', '2016-02-14 18:05:00', 'RUNNING'
'engine1', '2016-02-14 18:19:00', 'STOPPED'
'engine1', '2016-02-14 18:36:00', 'RUNNING'
'engine1', '2016-02-14 18:51:00', 'RUNNING'
データベースには、下にリンクされているOpenAccess SQLが実行されます。 TOPは、サブクエリ、派生テーブル、または共用体と組み合わせて使用できますが、使用できません。私が知る限り、LIMITはサポートされていません。
http://media.datadirect.com/download/docs/openaccess/sdk/openaccess_sql.pdf