PostgerSQL ARRAY_AGG の と Oracle の LISTAGG

PostgreSQL には 行を 配列に変える ARRAY_AGG という関数があります。 これと配列を文字列に変える ARRAY_TO_STRING を組み合わせることで 行をカンマ区切りなどの文字列にすることができます。

例えば こんなテーブルに対して...

db=# SELECT id, name FROM fruit;

 id |  name
----+--------
  1 | りんご
  2 | みかん
  3 | ぶどう

次のような結果を得ることができます。

db=# SELECT ARRAY_TO_STRING(ARRAY_AGG(name order by id), ',') AS names FROM fruit;

        names
----------------------
 りんご,みかん,ぶどう

これを Oracle でなんとかできなかと思っていたんですが Oracleでも11g R2 から LISTAGG という関数が追加されていました。

SQL> SELECT LISTAGG(name, ',') WITHIN GROUP (order by id) AS names FROM fruit;

        names
----------------------
 りんご,みかん,ぶどう

LISTAGG 関数は ARRAY_AGG + ARRAY_TO_STRING のような動きをします。

元号、昭和や平成でいうと今年は何年?

あたらしい元号が発表されました。
慣れるのに少し時間がかかりそうですね。

過去に作った契約書などで 「平成28年〜平成43年」のようになっている場合があります。

「今って平成でいうと何年だっけ?」なんてことになりそうなので 計算用の JavaScript を作ってみました。

コチラ!

Google サイト内検索

Amazonアソシエイト