2列のBigQueryテーブルがあります。
id|name
1|John
1|Tom
1|Bob
2|Jack
2|Tim
期待される出力:IDでグループ化された名前の連結
id|Text
1|John,Tom,Bob
2|Jack,Tim
BigQuery標準SQLの場合:
#standardSQL
--WITH yourTable AS (
-- SELECT 1 AS id, 'John' AS name UNION ALL
-- SELECT 1, 'Tom' UNION ALL
-- SELECT 1, 'Bob' UNION ALL
-- SELECT 2, 'Jack' UNION ALL
-- SELECT 2, 'Tim'
--)
SELECT
id,
STRING_AGG(name ORDER BY name) AS Text
FROM yourTable
GROUP BY id
オプションのORDER BY name
以内に STRING_CONCAT
は、以下のように名前のソートされたリストを取得することができます
id Text
1 Bob,John,Tom
2 Jack,Tim
レガシーSQLの場合
#legacySQL
SELECT
id,
GROUP_CONCAT(name) AS Text
FROM yourTable
GROUP BY id
ここでソート済みリストを出力する必要がある場合は、以下を使用できます(正式には、BigQuery Legacy SQLによってソート済みリストを取得することは保証されていませんが、実際のほとんどの場合は機能しました)
#legacySQL
SELECT
id,
GROUP_CONCAT(name) AS Text
FROM (
SELECT id, name
FROM yourTable
ORDER BY name
)
GROUP BY id
GROUP_CONCATを使用できます
SELECT id, GROUP_CONCAT(name) AS Text FROM <dataset>.<table> GROUP BY name