У меня есть таблица с кучей записей:SQL Select запись в интервале времени
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
Пользователь вводит в момент х. Я хочу запросить самое последнее значение для каждого теста в течение первых Х часов входа. 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
У меня возникает синтаксическая ошибка для этого, но код кажется правильным. Может ли кто-нибудь немного мне помочь?
Спасибо!
Какая ошибка вы получаете и что такое RBDMS? MySql? Oracle? –
Я на постгреск. Ошибка - это просто «Синтаксическая ошибка на AS или рядом», где AS является частью AS u. – xhassassin