1

私はたくさんのレコードを持つテーブルを持っています:

userID    testID    value    time
1         1001      2        2009-09-05 06:25:00
1         1001      4        2009-09-05 07:25:00
1         1001      2        2009-09-05 03:25:00
1         1002      5        2009-09-05 06:25:00
1         1002      6        2009-09-05 07:25:00
1         1002      4        2009-09-05 03:25:00

ユーザーは時刻 x に入力します。入場から最初の X 時間以内の各テストの最新の値を照会したいと考えています。IE 彼が 3:25 に入力し、3 時間以内に最新の値が必要な場合は、戻りたい

1         1001      2        2009-09-05 07:25:00
1         1002      5        2009-09-05 07:25:00

これについて最善の方法はわかりませんが、これまでに試したことは次のとおりです。

SELECT testID, value from table WHERE userID = 1 and 
    time <= timestamp 'enter_time' + INTERVAL '3 HOURS' as u INNER JOIN 
    (SELECT testID, max(time) as time from table WHERE time <= timestamp 
    'enter_time' + INTERVAL '3 HOURS' GROUP BY testID) as q 
    on u.itemid = q.itemid AND u.time = q.time

これで構文エラーが発生しますが、コードは正しいようです。誰かが私を少し助けてくれますか?

ありがとう!

4

1 に答える 1

0

最初のクエリを括弧で囲む必要があります。

(SELECT testID, value from table WHERE userID = 1 and 
    time <= timestamp 'enter_time' + INTERVAL '3 HOURS') as u INNER JOIN 
    (SELECT testID, max(time) as time from table WHERE time <= timestamp 
    'enter_time' + INTERVAL '3 HOURS' GROUP BY testID) as q 
    on u.itemid = q.itemid AND u.time = q.time
于 2013-08-02T15:52:30.553 に答える