示例输入
Name | Value | Timestamp
-----|-------|-----------------
One | 1 | 2016-01-01 02:00
Two | 3 | 2016-01-01 03:00
One | 2 | 2016-01-02 02:00
Two | 4 | 2016-01-03 04:00
所需输出
而不是使用 union 子句来显示第一行和最后一行。我们如何显示它?
SELECT * FROM TABLE
WHERE ROWNUM = 1
UNION ALL
SELECT * FROM TABLE
WHERE ROWNUM IN (SELECT MAX(ROWNUM) FROM TABLE);
请告诉我这个问题的解决方案。提前致谢。
最佳答案
您似乎在描述聚合:
select name, max(value), min(timestamp), max(timestamp)
from t
group by name;
您的问题表明您可能需要最新值而不是最大值。如果是这样,请使用first
聚合函数:
select name,
max(value) keep (dense_rank first order by timestamp desc),
min(timestamp), max(timestamp)
from t
group by name;
关于sql - 如何使用 rownum 显示给定表的第一行和最后一行而不使用 union 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65667106/