sql >> データベース >  >> RDS >> PostgreSQL

OracleXE11.2のPostgreSQLのarray_aggに相当します

    出力を配列(またはコレクション)として保存するためにストアドプロシージャで使用している場合を除き、LISTAGGを使用したクエリ 十分であり、同じ出力が得られるはずです。

    select ID , LISTAGG(Category,',') WITHIN GROUP ( ORDER BY ID ) Categories
    FROM yourtable GROUP BY ID;
    

    オラクルには、array_aggのような簡単な変換関数はありません。 。ただし、ユーザー定義のコレクションタイプを作成してから、CASTを使用することはできます。 およびCOLLECT それをNESTED TABLEに変換する関数 同じ目的の出力を取得します。

    まず、コレクションTYPEを作成します 。

    create or replace TYPE categorytype as TABLE OF VARCHAR2(20);
    

    これで、このクエリを実行することは、string_aggを使用することと同じです。 またはLISTAGG 、ただしcategories 配列またはコレクションです 、文字列ではなく。

    select id, CAST ( COLLECT(Category) as categorytype ) categories
    FROM yourtable group by id;
    
    | ID | CATEGORIES |
    |----|------------|
    |  1 |  Cat1,Cat2 |
    |  2 |  Cat3,Cat4 |
    

    デモ



    1. SQL:出力列で発生するオカレンスの数をカウントし、オカレンスに基づいてパーセンテージを計算します

    2. 関数を使用して2つの日付の間の日付のリストを取得します

    3. 既存の行をクリアせずにボタンをクリックしながらデータベースからjTableに新しい行を追加する方法

    4. Oracle Regexpは、\ n、\ r、および\tをスペースに置き換えます