我有一个查询
,它提供以下输出
这是一个示例数据。我标记了两行包含相同的手机号码。如果有相同的手机号码我想将行合并为一个及其相应的数据,我想执行以下操作。我怎么能这样做?
答案 0 :(得分:1)
您可以使用LISTAGG analytic function
来执行此操作。有关它的好提示(以及实现结果的其他方法)可以找到here。
让我尝试草拟一个简化的解决方案。让我们说你的查询看起来像这样 - 我不喜欢加入where子句=)
select gsm.mobile_no, sgcp.name as "charge name"
from service.gsm gsm
join charge.gsm_charge_plan sgcp
on sgcp.service_code = gsm.code;
然后你可以做类似
的事情SELECT gsm.mobile_no,
LISTAGG(sgcp.name, ',') WITHIN GROUP (ORDER BY sgcp.name) AS "charge names"
from service.gsm gsm
join charge.gsm_charge_plan sgcp
on sgcp.service_code = gsm.code
GROUP BY gsm.mobile_no;
答案 1 :(得分:0)
您可以尝试 - 按gsm.mobile_no分组?