ホームページ > データベース > mysql チュートリアル > SQL Server で STRING_AGG を使用して個別の値を取得する方法

SQL Server で STRING_AGG を使用して個別の値を取得する方法

DDD
リリース: 2025-01-03 19:52:40
オリジナル
190 人が閲覧しました

How to Get Distinct Values Using STRING_AGG in SQL Server?

SQL Server で STRING_AGG を使用した個別の値

SQL Server 2017 の STRING_AGG 関数を使用すると、値を 1 つの文字列に連結できます。ただし、複数出現するフィールドを連結すると、重複した値が返される可能性があります。

次のクエリを考えてみましょう:

SELECT 
    ProjectID,
    STRING_AGG( newID.value, ',') WITHIN GROUP (ORDER BY newID.value) AS NewField
FROM
    [dbo].[Data] WITH(NOLOCK)  
CROSS APPLY 
    STRING_SPLIT([bID],';') AS newID  
WHERE 
    newID.value IN ('O95833', 'Q96NY7-2')  
GROUP BY 
    ProjectID
ORDER BY 
    ProjectID
ログイン後にコピー

このクエリは連結された値を返しますが、重複が含まれます:

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

一意の値のみを取得するには、DISTINCT キーワードをsubquery:

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

このサブクエリは、STRING_AGG 関数を適用する前に重複を削除します。最終結果は次のようになります:

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

以上がSQL Server で STRING_AGG を使用して個別の値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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