ホームページ >データベース >mysql チュートリアル >SQL Server で STRING_AGG を使用するときに重複を排除するにはどうすればよいですか?

SQL Server で STRING_AGG を使用するときに重複を排除するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-04 07:51:35611ブラウズ

How to Eliminate Duplicates When Using STRING_AGG in SQL Server?

STRING_AGG 結果の重複の削除

このタスクは、SQL Server の STRING_AGG 関数を使用して一意の値を取得し、重複した要素が確実に削除されるようにすることです。 .

提供されたサンプル クエリでは、STRING_AGG 関数は次の目的で使用されます。文字列を単一のカンマ区切りフィールドに連結し、ProjectID ごとにグループ化します。ただし、結果の NewField には重複した値が含まれています。

一意の NewField を取得するには、サブクエリ内で 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 と newId.value の個別の値を選択します。これらの個別の値は、外部クエリで STRING_AGG 操作を実行するために使用され、最終的な NewField 結果に重複が存在しないことが保証されます。

この変更されたクエリを実行すると、一意の値のみを含む目的の出力が得られます。

ProjectID | NewField
----------+----------
2         | O95833, Q96NY7-2
4         | Q96NY7-2

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

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