oracle sql pivoting选项

时间:2014-04-25 09:39:38

标签: sql oracle

我有一个查询

,它提供以下输出

enter image description here

这是一个示例数据。我标记了两行包含相同的手机号码。如果有相同的手机号码我想将行合并为一个及其相应的数据,我想执行以下操作。我怎么能这样做?

2 个答案:

答案 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分组?