在 Teradata SQL 中连接多个记录的字符串

JF4*_*bes 5 sql string teradata aggregation

我有一份在不同州做生意的商人名单。

Merch    State

A          NC

A          FL

B          CA

B          VA
Run Code Online (Sandbox Code Playgroud)

我不想返回四个记录,而是想按商品分组,但连接状态的字符串,以便输出看起来像

Merch      States

A           NC,FL

B           CA,VA
Run Code Online (Sandbox Code Playgroud)

我在翻译这个答案中针对我的问题的响应时遇到了很多麻烦 连接/聚合字符串的最佳方式

我也无法让 String_agg 工作,我不确定它在 Teradata 中是否工作。https://learn.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql

JNe*_*ill 7

您可以使用xml_agg()Teradata 中的内置函数。这不能很好地从 SQL Server 转换,这就是您在使用这两个链接时遇到问题的原因。

SELECT merch, TRIM(TRAILING ',' FROM (XMLAGG(States || ',' ORDER BY States) (VARCHAR(500))))
FROM yourtable
GROUP BY 1;
Run Code Online (Sandbox Code Playgroud)