SQL Server のグループに参加する
SQL Server 2005 でグループ内の値を結合するには、ユーザー定義の集計関数の使用を検討してください。
解決策:
ユーザー定義集計関数 (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>
クエリで 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 サイトの他の関連記事を参照してください。