2013-11-25 54 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()函數中並不適用於單個查詢。無論如何,你的答案讓我去,所以非常感謝! –