У меня есть таблица some_table
как
+--------+----------+---------------------+-------+
| id | other_id | date_value | value |
+--------+----------+---------------------+-------+
| 1 | 1 | 2011-04-20 21:03:05 | 104 |
| 2 | 2 | 2011-04-20 21:03:04 | 229 |
| 3 | 3 | 2011-04-20 21:03:03 | 130 |
| 4 | 1 | 2011-04-20 21:02:09 | 97 |
| 5 | 2 | 2011-04-20 21:02:08 | 65 |
| 6 | 3 | 2011-04-20 21:02:07 | 101 |
| ... | ... | ... | ... |
+--------+----------+---------------------+-------+
И я хочу последние записи для other_id
1
, 2
и 3
. Я пришел к очевидному запросу:
SELECT id, other_id, MAX(date_value), value
FROM some_table
WHERE other_id IN (1, 2, 3)
GROUP BY other_id
Однако он выдает исключение "not a GROUP BY expression
". Я попытался добавить все остальные поля (то есть id
, value
) в предложении GROUP BY
, но это просто возвращает все, точно так же, как если бы не было предложения GROUP BY
. (Ну, это тоже имеет смысл.)
Итак ... Я читаю руководство по Oracle SQL, и все, что я могу найти, - это некоторые примеры, включающие только запросы с двумя или тремя столбцами и некоторые функции группировки, которые я никогда не видел прежде. Как мне пойти и вернуться
+--------+----------+---------------------+-------+
| id | other_id | date_value | value |
+--------+----------+---------------------+-------+
| 1 | 1 | 2011-04-20 21:03:05 | 104 |
| 2 | 2 | 2011-04-20 21:03:04 | 229 |
| 3 | 3 | 2011-04-20 21:03:03 | 130 |
+--------+----------+---------------------+-------+
(последние записи для каждого other_id
)? Спасибо.