我有一个名为" Quarter_revenue"的表。表结构的样本如下
Year Quarter Revenue 2017 Q1 10000 2017 Q1 20000 2017 Q2 30000 2017 Q2 40000 2017 Q3 50000 2017 Q3 60000 2017 Q4 70000 2017 Q4 80000 2016 Q1 90000 2016 Q1 100000 2016 Q2 110000 2016 Q2 120000 2016 Q3 130000 2016 Q3 140000 2016 Q4 150000 2016 Q4 160000 2015 Q1 170000 2015 Q1 180000 2015 Q2 190000 2015 Q2 200000 2015 Q3 210000 2015 Q3 220000 2015 Q4 230000 2015 Q4 240000
此表中没有日期列。我想从这个表中获取最后两个季度的数据。该表将在每个季度更新。请帮帮我...
答案 0 :(得分:1)
如果您想要整个表中的最后两个季度,那么密集排名应该有效:
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
该演示在SQL Server中,但它也应该在Oracle中完全有效。设置Oracle演示也很痛苦。
答案 1 :(得分:0)
假设“过去两个季度”表示当前日历季度和前一个季度,您可以尝试
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)
。