Oracle SQL:获取带过滤器的第一行

Oracle SQL:获取带过滤器的第一行,第1张

概述如何让第一行过滤掉一些值?我使用row_number()(按名称ORDER BY Date分区)来获取订单(参见下面的示例).但是我需要,等级将从Type = B的最后一次出现开始(参见预期输出) SELECT Name, Age, Type, Date, row_number() over(partition by Name ORDER BY Date) as RankFROM 如何让第一行过滤掉一些值?我使用row_number()(按名称ORDER BY Date分区)来获取订单(参见下面的示例).但是我需要,等级将从Type = B的最后一次出现开始(参见预期输出)

SELECT name,Age,Type,Date,row_number() over(partition by name ORDER BY Date) as RankFROM tableA;

例如 :

name   Age   Type   Date          RankBen    12      A    2013/02/01    1 Rod    14      A    2013/02/05    2Zed    13      B    2013/03/09    3Ken    12      A    2013/04/02    4 Jed    14      B    2013/05/01    5Mar    13      A    2013/05/04    6Nic    12      A    2013/06/02    7Jen    15      A    2013/06/09    8

预期产出:

name   Age    Type   Date         RankMar    13      A    2013/05/04    1Nic    12      A    2013/06/02    2Jen    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演示

总结

以上是内存溢出为你收集整理的Oracle SQL:获取带过滤器的第一行全部内容,希望文章能够帮你解决Oracle SQL:获取带过滤器的第一行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1165868.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存