在一个帐户中为 2 个客户创建列名 SQL

Create column name for 2 customers in one account SQL

我有关于链接到那里帐户的客户的数据。在一个帐户中,我们可以有一个或多个客户,我想根据组成该帐户的客户名称创建“帐户名称”列,如下所示:

原始数据:

Account ID Customer ID Name
68959 121048 ROQUES THIERRY
68959 121049 CAPO SYLVIE
76280 121276 CORSEAUX PHILIPPE
76280 121277 ARRIAT SANDRINE
56800 121623 PERSONNA DIDIER
79551 121771 TRUQUEZ PHILIPPE
79551 121772 SLUGACZ KAREN
81646 122081 MOREAUX FABIEN

根据组成帐户的客户创建帐户名称后:

Account ID Customer ID Name Account Name
68959 121048 ROQUES THIERRY ROQUES THIERRY&CAPO SYLVIE
68959 121049 CAPO SYLVIE ROQUES THIERRY&CAPO SYLVIE
76280 121276 CORSEAUX PHILIPPE CORSEAUX PHILIPPE&ARRIAT SANDRINE
76280 121277 ARRIAT SANDRINE CORSEAUX PHILIPPE&ARRIAT SANDRINE
56800 121623 PERSONNA DIDIER PERSONNA DIDIER
79551 121771 TRUQUEZ PHILIPPE TRUQUEZ PHILIPPE&SLUGACZ KAREN
79551 121772 SLUGACZ KAREN TRUQUEZ PHILIPPE&SLUGACZ KAREN
81646 122081 MOREAUX FABIEN MOREAUX FABIEN

这必须通过 SQL 语句来实现,你推荐我做什么?

谢谢

您将使用字符串聚合函数 listagg()。我不确定 DB2 是否支持它作为 window 函数:

select t.*,
    listagg(name, ' & ') within group(order by customerid) over(partition by accountid) as accountnames
from mytable t

如果没有,您可以改用相关子查询:

select t.*,
    (
        select listagg(t1.name, ' & ') within group(order by t1.customerid) 
        from mytable t1 
        where t1.accountid = t.accountid
    ) as accountnames
from mytable t