SQL Server で STRING_AGG と DISTINCT を使用して一意の値を取得する
SQL Server 2017 で導入された SQL Server STRING_AGG 関数を使用すると、集計が可能になります。複数の行の文字列を単一のカンマ区切り文字列に変換します。ただし、コンマ区切りフィールド内の値を区切るために STRING_SPLIT とともに使用すると、集計された文字列内に重複した値が生じる可能性があります。
集計された文字列内で一意の値を取得するには、サブクエリ内の DISTINCT キーワード。変更されたクエリは次のとおりです:
SELECT ProjectID ,STRING_AGG(value, ',') WITHIN GROUP (ORDER BY value) AS NewField FROM ( SELECT DISTINCT ProjectID , newId.value FROM [dbo].[Data] WITH (NOLOCK) CROSS APPLY STRING_SPLIT([bID],';') AS newId WHERE newId.value IN ( 'O95833' , 'Q96NY7-2' ) ) x GROUP BY ProjectID ORDER BY ProjectID
この改善されたクエリでは:
この変更されたクエリの出力は次のようになります。
ProjectID NewField ------------------------------- 2 O95833, Q96NY7-2 4 Q96NY7-2
これにより、STRING_AGG を使用して集計された一意の値を含む、望ましい結果が得られます。
以上がSQL Server の STRING_AGG を使用してカンマ区切りの文字列の一意の値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。