以下是我的示例数据,我想获得具有最新时间的host:value对。
+------+-------+-------+
| HOST | VALUE | TIME |
+------+-------+-------+
| A | 100 | 13:40 |
| A | 150 | 13:00 |
| A | 222 | 13:23 |
| B | 210 | 13:55 |
| B | 300 | 13:44 |
+------+-------+-------+
想要获得每个主机列值的最新时间值的行。 结果应该是: A 150 13:40 B 210 13:55
我认为在Oracle中有几个分析功能可以实现这个要求,但我不知道我能在SQLite中做些什么。
您能告诉我如何进行查询吗?
答案 0 :(得分:1)
以下是符合ANSI标准的执行查询的方法,该方法应在所有版本的SQLite上运行。对于可能更短的解决方案,请参阅@CL的答案。
SELECT t1.HOST || '-' || t1.VALUE || '-' || t1.TIME AS HOSTVALUETIME
FROM table t1 INNER JOIN
(
SELECT HOST, MAX(TIME) AS MAXTIME
FROM table
GROUP BY HOST
) t2
ON t1.HOST = t2.HOST AND t1.TIME = t2.MAXTIME
ORDER BY t1.HOST DESC
<强>输出:强>
+---------------+
| HOSTVALUETIME |
+---------------+
| A-100-13:50 |
| B-210-13:55 |
+---------------+