Oracle SQL单独的不同列

时间:2015-08-06 19:49:35

标签: sql oracle greatest-n-per-group

我想从下面的示例表中获取每个不同名称的单个记录,其中包含最新的日期。

我希望查询的结果能够给出:

Mark    Checked_in  04-AUG-15  Blue
Dan     Checked_in  08-JUL-15  Yellow 

示例表:

Name    Action      Date       Color
Mark    Checked_in  04-AUG-15  Blue
Mark    Checked_in  02-AUG-15  Black
Dan     Checked_in  02-JUL-15  Orange
Dan     Checked_in  08-JUL-15  Yellow

2 个答案:

答案 0 :(得分:2)

WITH WithRN as (SELECT Name
        , Action
        , "Date"
        , Color
        , row_number() over (partition by Name order by "Date" desc) as RN
    FROM tableName)
SELECT Name, Action, "Data", Color
FROM WithRN
WHERE RN = 1

分析函数通常表现更好,然后使用聚合加入self。

答案 1 :(得分:0)

使用内联视图生成包含唯一值和最大日期值的子集。这里我假设为Name,然后将其连接回基集以产生所有需要的列,并且仅记录在这种情况下,问题最大(日期)。

file_url

假设每个名称的日期都是唯一的。