簡體   English   中英

Oracle組使用最小日期

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM