Oracle SQL:获取带过滤器的第一行
发布时间:2021-03-06 03:44:37 所属栏目:站长百科 来源:网络整理
导读:如何让第一行过滤掉一些值?我使用row_number()(按名称ORDER BY Date分区)来获取订单(参见下面的示例).但是我需要,等级将从Type = B的最后一次出现开始(参见预期输出) SELECT Name,Age,Type,Date,row_number() over(partition by Name ORDER BY Date) as Ran
如何让第一行过滤掉一些值?我使用row_number()(按名称ORDER BY Date分区)来获取订单(参见下面的示例).但是我需要,等级将从Type = B的最后一次出现开始(参见预期输出) SELECT Name,Age,Type,Date,row_number() over(partition by Name ORDER BY Date) as Rank FROM TableA; 例如 : Name Age Type Date Rank Ben 12 A 2013/02/01 1 Rod 14 A 2013/02/05 2 Zed 13 B 2013/03/09 3 Ken 12 A 2013/04/02 4 Jed 14 B 2013/05/01 5 Mar 13 A 2013/05/04 6 Nic 12 A 2013/06/02 7 Jen 15 A 2013/06/09 8 预期产出: Name Age Type Date Rank Mar 13 A 2013/05/04 1 Nic 12 A 2013/06/02 2 Jen 15 A 2013/06/09 3 解决方法尝试WITH qry AS ( SELECT "Name","Age","Type","Date",ROW_NUMBER() OVER (PARTITION BY "Type" ORDER BY "Date") rank FROM TableA ) SELECT "Name","Date" FROM qry WHERE rank = 1 输出: | NAME | AGE | TYPE | DATE | ------------------------------------------------------- | Ben | 12 | A | February,01 2013 00:00:00+0000 | | Zed | 13 | B | March,09 2013 00:00:00+0000 | 这是SQLFiddle演示 (编辑:青岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐