ホームページ > データベース > mysql チュートリアル > SQL Server の STRING_AGG 出力から重複する値を削除するにはどうすればよいですか?

SQL Server の STRING_AGG 出力から重複する値を削除するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-24 06:57:09
オリジナル
310 人が閲覧しました

How Can I Remove Duplicate Values from STRING_AGG Output in SQL Server?

SQL Server の STRING_AGG 関数内の重複値の処理

SQL Server 2017 で導入された SQL Server の STRING_AGG 関数は、列の値を 1 つの文字列に連結します。 ただし、本質的に重複は削除されません。 この記事では、集計された文字列内で個別の値を取得するための 2 段階のアプローチについて詳しく説明します。

2 段階のソリューション

重要なのは、STRING_AGG を使用する に個別の操作を実行することです。これには、2 段階のグループ化プロセスが含まれます:

  1. 個別値の初期グループ化: まず、最終結果に必要な他の列とともに、一意にする列ごとにデータをグループ化します。 これにより、ソースで重複した行が削除されます。

    <code class="language-sql">WITH Sitings AS (
        SELECT * FROM (VALUES 
        (1, 'Florida', 'Orlando', 'bird'),
        (2, 'Florida', 'Orlando', 'dog'),
        (3, 'Arizona', 'Phoenix', 'bird'),
        (4, 'Arizona', 'Phoenix', 'dog'),
        (5, 'Arizona', 'Phoenix', 'bird'),
        (6, 'Arizona', 'Phoenix', 'bird'),
        (7, 'Arizona', 'Phoenix', 'bird'),
        (8, 'Arizona', 'Flagstaff', 'dog')
        ) F (ID, State, City, Siting)
    ), CTE_Animals AS (
        SELECT State, City, Siting
        FROM Sitings
        GROUP BY State, City, Siting
    )</code>
    ログイン後にコピー
  2. 最終的なグループ化と集計: 次に、最初のステップの結果を目的の列ごとにグループ化し、STRING_AGG を適用して個別の値を連結します。

    <code class="language-sql">SELECT
        State, City, COUNT(1) AS [# Of Sitings], STRING_AGG(Siting,',') AS Animals
    FROM CTE_Animals
    GROUP BY State, City
    ORDER BY State, City;</code>
    ログイン後にコピー

文字列の長さに関する重要な注意事項:

連結された文字列が VARCHAR の 8000 文字制限を超える可能性がある場合は、VARCHAR(MAX):STRING_AGG を使用する前に値を

にキャストしてください。
<code class="language-sql">STRING_AGG(CAST(Siting AS VARCHAR(MAX)), ',') AS Animals</code>
ログイン後にコピー

このメソッドは、一意の値のみを含む STRING_AGG 結果を効果的に生成します。

以上がSQL Server の STRING_AGG 出力から重複する値を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート