Oracle Query中的自增值

时间:2013-04-08 14:13:11

标签: sql oracle

我是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之后获得递增值? 我甚至不确定在哪里看 - 我已经看过了排序,但我不确定这就是我需要的东西。有什么想法吗?

1 个答案:

答案 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>