在一行中针对一个 ID 显示多行 - Oracle SQL

Showing Multiple rows against an ID in One Row - Oracle SQL

我的问题有点相关: Display multiple values of a column in one row (SQL Oracle)

但是,我无法达到预期的效果。以下是我的问题陈述;

我有一个SQL查询;

SELECT initiator_msisdn,  trx_type  || '/'  || SUM(trx_amt/100)  || '/'  || SUM(merchant_comm_amt/100) agent_data
FROM LBI_DM_MK.T_M_INTERNAL_AUDIT_D
WHERE DATA_DATE = '20180401'
AND trx_status  ='Completed'
GROUP BY initiator_msisdn,  trx_type
;

即returns这些行;

带来这个数据的SQL是;

但是,我想要以下结果。

请帮忙解决这个问题;

你可以使用 LISTAGG:

WITH cte AS (
  SELECT initiator_msisdn,
          trx_type  || '/'  || SUM(trx_amt/100)  || '/'  ||
          SUM(merchant_comm_amt/100) agent_data
  FROM LBI_DM_MK.T_M_INTERNAL_AUDIT_D
  WHERE DATA_DATE = '20180401'
    AND trx_status  ='Completed'
  GROUP BY initiator_msisdn,  trx_type
)
SELECT initiator_msisdn,
       LISTAGG(agent_data, '|') WITHIN GROUP (ORDER BY agent_data) AS agent_data
FROM cte
GROUP BY initiator_msisdn;