2014-03-13 180 views
1

我有這樣INFORMIX中的row_number()?

SELECT ROW_NUMBER() over (order by nomorMahasiswa) AS number 
     ,namaMataKuliah 
FROM t_mahasiswa 

查詢像這樣

NUMBER LESSON 
1 Algoritma dan Pemrograman 
2 Pemrograman berorentiasi obyek 
3 jaringan 
4 Pemrograman Web 
5 jaringan 
6 jaringan 
7 Algoritma dan Pemrograman 
8 Algoritma dan Pemrograman 
9 algoritma 
10 oop 
11 oop 
12 algoritma 
13 algoritma 
14 algoritma 

我想做出那樣的查詢在INFORMIX 11.50輸出,我應該做些什麼?

+0

什麼版本的Informix您使用的是?如果我正確解釋文檔(http://pic.dhe.ibm.com/infocenter/informix/v121/index.jsp?topic=%2Fcom.ibm.sqls.doc%2Fids_sqs_2583.htm),這應該適用於Informix 12.10或更新。 –

+0

我用INFORMIX 11 –

回答

0

此語法在版本11.50或11.70中不可用。
這裏的可行選項是創建您自己的UDR(用戶定義的例程=過程)來模擬情況。

會有一些限制...
這是我的版本ROW_NUMBER的....

create procedure row_number(initial integer) returning integer as row_number; 
define global i integer default 0; 
    if initial = 0 then 
    let i = 0; 
    return 0 ; 
    end if; 
    let i = i+1; 
    return i ; 
end procedure 
document "Simplified and similar function to row_number() from SqlServer.", 
"Need to reset the counter before each sql statement with ", 
"execute procedure row_number(0) OR declare into FROM clause", 
"For use in SELECT statement use any other number in parameter:", 
"select row_number(1) , tabname from systables;", 
"OR select row_number(1) , tabname from systables, table(row_number(0))", 
"By Cesar Inacio Martins - www.imartins.com.br" 
with listing in "/tmp/row_number.out" 
; 
Routine created. 
; 

-- Here the syntax of call should always be the same, row_number(1) to 
-- the field and table(row_number(0)) for table 

select first 5 row_number(1), tabname::char(20) 
from systables, table(row_number(0)); 

(expression) (expression)   
      1 systables   
      2 syscolumns   
      3 sysindices   
      4 systabauth   
      5 syscolauth   
5 row(s) retrieved. 

select first 5 row_number(1), tabname::char(20) 
from systables, table(row_number(0)) 
order by 1 desc; 

(expression) (expression)   
     245 SMIVERSION   
     244 sysextspaces   
     243 syscompdicts   
     242 syscmsm    
     241 syssqexplain   
5 row(s) retrieved. 
+1

另一種選擇: http://informix-technology.blogspot.pt/2012/01/udrs-rownum-in-informix-rownum-em.html 不需要值復位。但需要C語言。 查看範例5對「ORDER」進行了非常簡短的討論......但最好的解決方案是移動到12.10當然 –