【问题标题】:Using Stuff to roll up data from multiple rows AND concatenate columns使用 Stuff 从多行汇总数据并连接列
【发布时间】:2020-06-24 21:32:28
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql string-aggregation


【解决方案1】:

在 SQL Server 中,您可以使用 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

【讨论】:

  • 谢谢。不幸的是,我不能使用最新版本(看起来更容易!)。在您提供的第二个版本中,您引用了 2 个表,t 和 t2...即使我的数据都在同一个表中,我是否需要这个
  • @user2938667 。 . .它只引用一张表。 t2a 是表别名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 2021-12-03
  • 2022-11-12
  • 1970-01-01
  • 2020-09-08
  • 2021-12-11
  • 2022-08-16
相关资源
最近更新 更多