2013-12-11 27 views
0

我正在使用oracle 10g。如何在Oracle中查找順序整數組?

我(簡化)表定義是

CREATE TABLE Student 
    ("Rno" INT PRIMARY KEY) 
; 

其中包含以下行

| RNO | 
|-----| 
| 1 | 
| 2 | 
| 3 | 
| 6 | 
| 8 | 
| 9 | 
| 12 | 
| 13 | 
| 14 | 
| 18 | 

我怎麼可能產生以下結果集?

|     RESULT | 
|------------------------| 
| 1-3, 6, 8-9, 12-14, 18 | 
+2

不知道哪個DBMS您使用,這是不可能的回答。 –

回答

2

您可以使用

SELECT LISTAGG("Txt", ', ') WITHIN GROUP (ORDER BY "Rno") "Result" 
FROM (SELECT CASE 
       WHEN MIN("Rno") = MAX("Rno") THEN CAST(MIN("Rno") AS VARCHAR2(11)) 
       ELSE MIN("Rno") || '-' || MAX("Rno") 
       END  AS "Txt", 
       MIN("Rno") AS "Rno" 
     FROM (SELECT ROW_NUMBER() OVER (ORDER BY "Rno") - "Rno" AS "Grp", 
         "Rno" 
       FROM Student) 
     GROUP BY "Grp") 

SQL Fiddle

+0

你馬丁.. – user3090870