【问题标题】:How to fetch last two quarter data from Oracle table如何从 Oracle 表中获取最后两个季度的数据
【发布时间】:2018-08-19 08:24:49
【问题描述】:

我有一张名为“Quarter_revenue”的表。表结构示例如下

年季度收入 2017 年第一季度 10000 2017 年第一季度 20000 2017 年第二季度 30000 2017 年第二季度 40000 2017年第三季度 50000 2017年第三季度 60000 2017 年第四季度 70000 2017 年第四季度 80000 2016 年第一季度 90000 2016 年第一季度 100000 2016 年第二季度 110000 2016 年第二季度 120000 2016年第三季度 130000 2016年第三季度 140000 2016年第四季度 150000 2016年第四季度 160000 2015年第一季度 170000 2015年第一季度 180000 2015年第二季度 190000 2015 年第二季度 200000 2015年第三季度 210000 2015年第三季度 220000 2015年第四季度 230000 2015 年第四季度 240000

此表中没有日期列。我想从此表中获取最后两个季度的数据。该表将在每个季度更新。请帮帮我..

【问题讨论】:

  • 那么你尝试了什么?

标签: database oracle oracle11g oracle12c


【解决方案1】:

假设“最后两个季度”是指当前日历季度和上一个季度,您可以尝试

select <whatever>
from   your_table
where  yr || qtr = to_char(sysdate, 'yyyy"Q"q')
   or  yr || qtr = to_char(add_months(sysdate, -3), 'yyyy"Q"q')

我假设您的列并没有真正称为 YEAR 和 QUARTER - 我在此插图中使用了 YR 和 QTR。

如果您的意思是在 2018 年 3 月必须选择 2017 年第 3 和第 4 季度,您可以将 WHERE 子句修改为 add_months(sysdate, -3)add_months(sysdate, -6)

【讨论】:

    【解决方案2】:

    如果您想要 整个 表中的最后两个季度,那么密集排名应该可以:

    SELECT Year, Quarter, Revenue
    FROM
    (
        SELECT Year, Quarter, Revenue,
            DENSE_RANK() OVER (ORDER BY Year DESC, Quarter DESC) dr
        FROM yourTable
    ) t
    WHERE dr IN (1, 2)
    ORDER BY
        Year, Quarter
    

    Demo

    演示在 SQL Server 中,但它也应该在 Oracle 中完全工作。设置 Oracle 演示也很痛苦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      相关资源
      最近更新 更多