ホームページ >データベース >mysql チュートリアル >SQL Server のグループ内の値を連結するにはどうすればよいですか?

SQL Server のグループ内の値を連結するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-09 12:36:48183ブラウズ

How to Concatenate Values Within Groups in SQL Server?

SQL Server のグループに参加する

SQL Server 2005 でグループ内の値を結合するには、ユーザー定義の集計関数の使用を検討してください。

解決策:

  1. ユーザー定義集計関数 (UDAF) を作成します:

    <code class="language-sql"> CREATE AGGREGATE [dbo].[ConcatValues] (@str VARCHAR(MAX))
     RETURNS VARCHAR(MAX)
     AS
     BEGIN
         DECLARE @result VARCHAR(MAX) = '',
                 @delim VARCHAR(2) = '';
         WHILE @str IS NOT NULL
         BEGIN
             SET @result = @result + @delim + @str;
             SET @delim = ',';
             SET @str = NEXT VALUE;
         END;
         RETURN @result;
     END;</code>
  2. クエリで UDAF を使用する:

    <code class="language-sql"> SELECT Id, [dbo].[ConcatValues](Value) AS ConcatenatedValues
     FROM YourTable
     GROUP BY Id;</code>

結果:

Id ConcatenatedValues
1 'A,B'
2 'C'

このソリューションでは、WHILE ループを使用して入力値を反復し、区切り文字としてカンマを使用して入力値を連結していることに注意してください。 これは元の例の FOR ループとは異なりますが、同じ機能を実装しており、SQL Server ではより一般的です。 NEXT VALUE は、集計関数の次の入力値を取得するために使用されます。 YourTable は実際のテーブル名に置き換える必要があります。

以上がSQL Server のグループ内の値を連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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