2013-11-25 57 views
0

如何向使用顺序的查询添加顺序行号?row_number()over()与订单组合

让说我有这种形式的请求:

SELECT row_number() over(), data 
FROM myTable 
ORDER BY data 

如行由“数据”命令这将产生期望的结果,但行号也被下令数据。我知道这是正常的,因为我的行号是在订单之前生成的,但是如何在订单之后生成此行号?

我曾尝试使用子查询这样的:

SELECT row_number() over(ORDER BY data), * 
FROM 
( 
    SELECT data 
    FROM myTable 
    ORDER BY data 
) As t1 

here显示,但是DB2似乎并不支持这种语法SELECT ..., * FROM

谢谢!

回答

2

您还需要之前 '*'

SELECT row_number() over(ORDER BY data), t1.* 
FROM 
( 
    SELECT data 
    FROM myTable 
    ORDER BY data 
) As t1 

使用alaias名字你并不需要一个子查询做到这一点,

SELECT data , row_number() over(ORDER BY data) as rn 
    FROM myTable 
    ORDER BY data 
+0

它的工作原理与T1。*。我过分简化了我的示例:我使用rand()在查询中生成一个列,以便我按顺序执行。将此列放在over()函数中并不适用于单个查询。无论如何,你的答案让我去,所以非常感谢! –