使用 Stuff 从多行汇总数据并连接列

Using Stuff to roll up data from multiple rows AND concatenate columns

我在网站上发现了类似的问题,但我仍在为此苦苦挣扎。我有一个 table,其中包含如下信息:

AcctNo   ChargeOrder    ChargeCode
 ABC         1           Charge1
 ABC         2           Charge2
 ABC         3           Charge3

我正在尝试使用 XML Path/STUFF 函数来 return 数据,如下所示:

AcctNo  Order/Code
ABC     1:Charge1 - 2:Charge2 - 3:Charge3

但我似乎无法弄清楚如何连接我的 chargeorder 和 chargecode 并将它们填充到一个字段中。

在SQL服务器中,您可以使用string_agg()——在较新的版本中:

select acctno,
       string_agg(concat(ChargeOrder, ':', ChargeCode), ' - ')
from t
group by acctno;

在旧版本中,这将表述为:

select a.acctno,
       stuff( (select concat(' - ', ChargeOrder, ':', ChargeCode)
               from t t2
               where t2.acctno = a.acctno
               for xml path ('')
              ), 1, 3, ''
            )
from (select distinct acctno from t) a