![](/img/trans.png)
[英]Calcualte Min(from) Max(to) Date Per Group in a Dataset using SQL in Oracle DB
[英]Oracle group using min date
我有这样的声明:
select REFNUMBER,
SomeDate,
Somecolumn1,
Somecolumn2
from Table
如何选择与REFNUMBER分组的最低日期关联的行?
使用ROW_NUMBER()
分析函数:
SELECT *
FROM (
SELECT REFNUMBER,
SomeDate,
Somecolumn1,
Somecolumn2,
ROW_NUMBER() OVER ( PARTITION BY REFNUMBER ORDER BY SomeDate ) As rn
FROM Table
)
WHERE rn = 1
使用第first/last
聚合函数,避免子查询:
select refnumber,
min(somedate) as somedate,
min(somecolumn1) keep (dense_rank first order by somedate) as somecolumn1,
min(somecolumn2) keep (dense_rank first order by somedate,
somecolumn1) as somecolumn2
from table_name
group by refnumber
如果有多个相同的最低日期(以一个REFNUMBER开头),则将提供此REFNUMBER的所有最小日期行。 (不仅一个)
SELECT Table.* FROM Table
INNER JOIN (SELECT REFNUMBER, MIN(SomeDate) AS mindt FROM Table GROUP BY REFNUMBER) t
ON
Table.REFNUMBER = t.REFNUMBER AND Table.SomeDate = t.mindt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.