我是Oracle DB的新手......
我有一个由2个字段组成的表,YEAR和MAINT_CODE。
我必须编写一个报告查询,它将在报告中呈现以下内容:
ACTION | YEAR | MAINT_CODE
--------------------------
Action 1 | 2012 | 0123
Action 2 | 2012 | 0122
Action 3 | 2013 | 0122
现在,我没有Action字段,Action之后的这个数字必须递增。 我根本无法改变这张桌子。
我当前的查询如下所示:
SELECT YEAR, MAINT_CODE
FROM mytable
如何在Action之后获得递增值? 我甚至不确定在哪里看 - 我已经看过了排序,但我不确定这就是我需要的东西。有什么想法吗?
答案 0 :(得分:6)
SELECT 'Action '||to_char(row_number() over (order by year, maint_code)) as action,
YEAR,
MAINT_CODE
FROM mytable
order by year, maint_code
你必须有一个订单,否则“序列”没有意义,这就是我应用order by year, maint_code
生成row_number()
并使用相同的排序定义对整体结果进行排序的原因。< / p>