ホームページ > データベース > mysql チュートリアル > SQL Server の STRING_AGG を使用してカンマ区切りの文字列の一意の値を取得するにはどうすればよいですか?

SQL Server の STRING_AGG を使用してカンマ区切りの文字列の一意の値を取得するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-04 05:28:39
オリジナル
302 人が閲覧しました

How to Get Unique Values in a Comma-Separated String Using SQL Server's STRING_AGG?

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
ログイン後にコピー

この改善されたクエリでは:

  • サブクエリ (SELECT DISTINCT ProjectID, newId.value FROM [dbo].[Data] WITH (NOLOCK) CROSS APPLY STRING_SPLIT([bID],';') AS newId WHERE newId.value IN ( 'O95833' 、 'Q96NY7-2' )) は、DISTINCT キーワードを使用して結果セットから重複する値を削除します。
  • STRING_AGG 関数が個別の値に適用され、集計された値には一意の要素のみが含まれるようになります。 string.

この変更されたクエリの出力は次のようになります。

ProjectID   NewField
-------------------------------
2           O95833, Q96NY7-2
4           Q96NY7-2
ログイン後にコピー

これにより、STRING_AGG を使用して集計された一意の値を含む、望ましい結果が得られます。

以上がSQL Server の STRING_AGG を使用してカンマ区切りの文字列の一意の値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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