2017-10-31 25 views
1

私は、例えば "employee"のためのテーブルを1つのカラム "id"だけ持っています。昇順にソートIEとその最初の5〜1レコードを、第2の5〜2秒、とを連結今、私は次のような結果を与えるクエリを記述したいと思いますが、1から10005つのレコードをグループ化するクエリ

Employee 
------------ 
ID 
------------ 
1 
2 
3 
.. 
.. 
999 
1000 

を通じてレコードを持っていると言いますに。どのように私はこれを行うことができます任意のアイデア?

ここで私が探している出力です。

1,2,3,4,5 
6,7,8,9,10 
11,12,13,14,15 
........... 
........... 
996,997,998,999,1000 
+0

より良いあなたができるより高いレベル、すなわちアプリケーションコードで集約のこのタイプを行うにはグループ化のより多くの側面を制御します。 whileループを使用してSQLで実現できますが、効率が悪いと考えられています –

答えて

2

使用row_numberとこのようにlistagg機能、:

SELECT listagg(id, ',') within group(order by group_no, id) 
FROM (
    select id, 
      trunc((row_number() over(order by id) -1)/5) as group_no 
    from employee 
) 
GROUP BY group_no 

の作業のデモ:http://sqlfiddle.com/#!4/ef526/10

| LISTAGG(ID,',')WITHINGROUP(ORDERBYGROUP_NO,ID) | 
|------------------------------------------------| 
|          1,2,3,4,5 | 
|          6,7,8,9,10 | 
|         11,12,13,14,15 | 
|         16,17,18,19,20 | 
|         21,22,23,24,25 | 
|         26,27,28,29,30 | 
|         31,32,33,34,35 | 
|         36,37,38,39,40 | 
|         41,42,43,44,45 | 
|         46,47,48,49,50 | 
|         51,52,53,54,55 | 
|         56,57,58,59,60 | 
|         61,62,63,64,65 | 
|         66,67,68,69,70 | 
|         71,72,73,74,75 | 
|         76,77,78,79,80 | 
|         81,82,83,84,85 | 
|         86,87,88,89,90 | 
|         91,92,93,94,95 | 
|        96,97,98,99,100 | 
|       101,102,103,104,105 | 
|       106,107,108,109,110 | 
|       111,112,113,114,115 | 
|       116,117,118,119,120 | 
|       121,122,123,124,125 | 
|       126,127,128,129,130 | 
|       131,132,133,134,135 | 
|       136,137,138,139,140 | 
|       141,142,143,144,145 | 
|       146,147,148,149,150 | 
|       151,152,153,154,155 | 
|       156,157,158,159,160 | 
|       161,162,163,164,165 | 
|       166,167,168,169,170 | 
|       171,172,173,174,175 | 
|       176,177,178,179,180 | 
|       181,182,183,184,185 | 
|       186,187,188,189,190 | 
|       191,192,193,194,195 | 
|       196,197,198,199,200 | 
+0

ありがとうございます。出来た。 – Anil

関連する問題