SQL Server のグループ化された文字列集計: 'AGG' の置換
SQL Server には 'AGG に似た組み込みの文字列集計関数がありません' 指定したクエリに含まれています。ただし、行の値をグループ化された結果に連結する別の方法もあります。
1 つのソリューションでは、FOR XML 関数と STUFF 関数を利用します。 FOR XML 関数は、内部クエリの結果を XML に変換します。これを STUFF 関数で処理して、XML タグを削除し、文字列を連結できます。以下に例を示します。
SELECT *, (SELECT STUFF(( SELECT ', ' + CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID FOR XML PATH('') ), 1, 1, '') as CarModels FROM CarMakes make
別のアプローチでは、COALESCE 関数と ROW_NUMBER 関数を利用します。 COALESCE 関数は NULL 以外の値を連結し、ROW_NUMBER 関数は各グループ内で一意の行番号を割り当てます。次のクエリでは、このアプローチが使用されています。
SELECT CarMakeID, CarMake, COALESCE( ( SELECT CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) = 1 ), '', COALESCE( ( SELECT ', ' + CarModel FROM CarModels model WHERE model.CarMakeID = make.CarMakeID AND ROW_NUMBER() OVER (PARTITION BY make.CarMakeID ORDER BY model.CarModelID) > 1 ) ) ) as CarModels FROM CarMakes make
これらのアプローチは、SQL Server で文字列をグループ化および連結するための代替方法を提供し、効率的で読みやすいデータ集計を可能にします。
以上が「AGG」関数を使用せずに SQL Server で文字列の集計を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。