0

重複の可能性:
複数の行を1つの行に集約するOracle SQLクエリはありますか?

oracleテーブルからユーザーの詳細を取得するためのSQLクエリの以下の出力があります

   Select distinct userid from Scope1

USERID 
Rakesh 
Admin 

クエリをさらに簡単に実行できるように、出力を次のようにしたいと思います。私を助けてください。

USERID
'Rakesh','Admin'

ありがとう

4

4 に答える 4

1

LISTAGGを使用してみてください。Tim Hall には、これに関する優れたドキュメントがあります。

   select LISTAGG(''''||userid||'''', ',')
   WITHIN GROUP (ORDER BY userid) userid
   from Scope1

SQL フィドルのデモ

于 2012-11-02T08:22:33.790 に答える
0

組み込みのLISTAGG関数を見てください。

http://docs.oracle.com/cd/E14072_01/server.112/e10592/functions087.htm

于 2012-11-02T07:19:10.543 に答える
0

クエリでループを実行する関数が必要です。この関数は、必要なデータのコンマ区切り値を返します。何かのようなもの:

str1 := '';
for rec in (select distinct userid from Scope1) 
loop
  str1 := str1 || rec.userid || ', ';
end loop;
str1 := substr(str1, 1, length(str1) - 2);
于 2012-11-02T07:15:13.540 に答える
0

以下のクエリは、データをコンマ区切り形式で選択します。

SELECT 
   RTRIM (XMLAGG (XMLELEMENT (E, userid || ',')).EXTRACT ('//text()'), ',') AS UserID
FROM Scope1 ;

wm_concat を使用するのはどうですか:

SELECT wm_concat(''''||userid||'''') FROM Scope1;
于 2012-11-02T07:16:15.250 に答える