【SQL】STRING_AGGでグルーピングした要素をカンマ繋ぎで取得する【SQL Server】

  • 2020.08.05
  • SQL
【SQL】STRING_AGGでグルーピングした要素をカンマ繋ぎで取得する【SQL Server】

はじめに

コジマです。

削除されたユーザーIDの一覧を取得したい!
特定の条件を満たすアイテムIDを取得したい!

でも縦に並んでるのはヤダ!カンマ繋ぎがいい!

こんなときに使います。

基本構文

STRING_AGG (カラム名, 区切り文字) WITHIN GROUP (ORDER BY ソート条件)

です。もっと細かいものもあるけれど、これがわかればよいです。
区切り文字を「,」にすることでカンマ区切りの集約を実現するってわけです。

例1:削除されたユーザーIDの一覧を取得したい

サンプルSQL

出力結果

id name
3,4 tanaka,suzuki

例2:値段が500円を超える商品名をスラッシュつなぎで出す

区切り文字変えればスラッシュつなぎだってできます。

サンプルSQL

出力結果

names
かるた/花札/だるま

さいごに

こういう小技を覚えるとSQL書くのが楽しくなってきます。

STRING_AGGの公式ドキュメントはこちら。
https://docs.microsoft.com/ja-jp/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-ver15

SQL Serverで使えるようになったのはSQL Server2017からとのことなので、古いバージョンでは使えません。

他のRDSで使えるかは分かりませんが、バージョンの注意は必要です。

この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!

以上、コジマでした。


SQLカテゴリの最新記事