
SQL Server で STRING_AGG と DISTINCT を使用して一意の値を取得する
SQL Server 2017 で導入された SQL Server STRING_AGG 関数を使用すると、集計が可能になります。複数の行の文字列を単一のカンマ区切り文字列に変換します。ただし、コンマ区切りフィールド内の値を区切るために STRING_SPLIT とともに使用すると、集計された文字列内に重複した値が生じる可能性があります。
集計された文字列内で一意の値を取得するには、サブクエリ内の DISTINCT キーワード。変更されたクエリは次のとおりです:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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.
この変更されたクエリの出力は次のようになります。
1 2 3 4 | ProjectID NewField
-------------------------------
2 O95833, Q96NY7-2
4 Q96NY7-2
|
ログイン後にコピー
これにより、STRING_AGG を使用して集計された一意の値を含む、望ましい結果が得られます。
以上がSQL Server の STRING_AGG を使用してカンマ区切りの文字列の一意の値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。