15

次のクエリがあります。

SELECT
  Account,
  Unit,
  SUM(state_fee),
  Code
FROM tblMta
WHERE MTA.Id = '123'
GROUP BY Account,Unit

group byコードが句にないため、これはもちろん例外をスローします。各 state_fee にはコードがあります。このコードをコンマ区切りのリストとして 1 つのレコード (state_fee ごとに 1 つのコード、ユニットごとに複数の state_fee) に表示するにはどうすればよいですか? ここでさまざまなソリューションを調べましたが、 で機能するソリューションが見つかりませんでしたgroup by

4

3 に答える 3

23

FOR XML PATHコンストラクトを使用したい:

SELECT ACCOUNT, 
       unit, 
       SUM(state_fee), 
       Stuff((SELECT ', ' + code 
              FROM   tblmta t2 
              WHERE  t2.ACCOUNT = t1.ACCOUNT 
                     AND t2.unit = t1.unit 
                     AND t2.id = '123' 
              FOR XML PATH('')), 1, 2, '') [Codes] 
FROM   tblmta t1 
WHERE  t1.id = '123' 
GROUP  BY ACCOUNT, 
          unit 

ここで他の例を参照してください。

于 2011-09-16T18:52:07.707 に答える
0

連結する組み込みの集約関数はありませんが、この記事では、ユーザー定義の連結集約関数を含むいくつかの代替ソリューションについて説明します。

https://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/

于 2011-09-16T18:16:23.247 に答える