ホームページ >データベース >mysql チュートリアル >SQL Server 2017 で STRING_AGG を使用して明確な結果を得るにはどうすればよいですか?

SQL Server 2017 で STRING_AGG を使用して明確な結果を得るにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-24 06:46:10804ブラウズ

How Can I Get Distinct Results Using STRING_AGG in SQL Server 2017?

SQL Server 2017 の STRING_AGG 関数を使用した一意の値の生成

SQL Server 2017 の STRING_AGG 関数は、個別の値を直接サポートしません。 ただし、2 段階のアプローチを使用すると、独自の集計結果を達成することができます。 このメソッドは、STRING_AGG(DISTINCT column, ',').

の無効な構文を回避します。

このソリューションには、データを前処理する共通テーブル式 (CTE) が含まれます。 CTE は、最終的な集計の前にデータをグループ化して重複を排除します。

以下の例は、この手法を示しています。 最初の Sitings CTE はサンプル データを提供します。 CTE_Animals CTE は、StateCitySiting ごとにグループ化して、冗長なエントリを削除します。次に、メイン クエリは STRING_AGG を使用して、SitingState の各組み合わせの一意の City 値を連結します。

<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
)
SELECT
    State, City, COUNT(*) AS [# Of Sitings], STRING_AGG(Siting,',') AS Animals
FROM CTE_Animals
GROUP BY State, City
ORDER BY
    State, City;</code>

このアプローチでは、最後の Animals 列には各場所の一意の動物目撃情報のみが含まれることが保証され、# Of Sitings 列には個別の数が反映されます。 ORDER BY 句は、一貫性のある予測可能な出力順序を保証します。

以上がSQL Server 2017 で STRING_AGG を使用して明確な結果を得るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。