我有一个表像some_table
的Oracle SQL GROUP BY “不是一个GROUP BY表达式” 帮助
+--------+----------+---------------------+-------+
| 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
”异常。我尝试在GROUP BY
子句中添加所有其他字段(即id
,value
),但这只是返回所有内容,就好像没有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
的最新条目)?谢谢。
优秀!这就像一个魅力! – 2011-04-28 08:19:37
为什么不使用MAX聚合? – Benoit 2011-04-28 08:22:36
@Benoit,'order by date_value desc'做同样的事情 – 2011-04-28 08:32:47