记一次mysql查询问题,用group by和case when实现多行数据合并到一行

最终的查询语句是这样的:

SELECT source_code,source_name,
MAX(CASE plan_id WHEN '1001' THEN is_clean ELSE NULL END) is_clean,
MAX(CASE plan_id WHEN '1001' THEN unit_cost ELSE NULL END) unit_cost,
MAX(CASE plan_id WHEN '1001' THEN capa_scale ELSE NULL END) capa_scale,
MAX(CASE plan_id WHEN '1001' THEN unit_opex ELSE NULL END) unit_opex,
MAX(CASE plan_id WHEN '1002' THEN is_clean ELSE NULL END) is_clean,
MAX(CASE plan_id WHEN '1002' THEN unit_cost ELSE NULL END) unit_cost,
MAX(CASE plan_id WHEN '1002' THEN capa_scale ELSE NULL END) capa_scale,
MAX(CASE plan_id WHEN '1002' THEN unit_opex ELSE NULL END) unit_opex,
MAX(CASE plan_id WHEN '1003' THEN is_clean ELSE NULL END) is_clean,
MAX(CASE plan_id WHEN '1003' THEN unit_cost ELSE NULL END) unit_cost,
MAX(CASE plan_id WHEN '1003' THEN capa_scale ELSE NULL END) capa_scale,
MAX(CASE plan_id WHEN '1003' THEN unit_opex ELSE NULL END) unit_opex,
MAX(CASE plan_id WHEN '1004' THEN is_clean ELSE NULL END) is_clean,
MAX(CASE plan_id WHEN '1004' THEN unit_cost ELSE NULL END) unit_cost,
MAX(CASE plan_id WHEN '1004' THEN capa_scale ELSE NULL END) capa_scale,
MAX(CASE plan_id WHEN '1004' THEN unit_opex ELSE NULL END) unit_opex
FROM gpe_source_type D LEFT JOIN
(SELECT A.plan_id,A.parent_pro_id,C.source_type,A.plan_name,is_clean,unit_cost,capa_scale,unit_opex
FROM gpe_pro_plan_info A,(SELECT * FROM GPE_PRO_LCOE WHERE PARENT_PRO_ID = '1281') AS C
WHERE A.parent_pro_id=C.parent_pro_id AND A.plan_id=C.plan_id
)AS B 
ON D.source_code=B.source_type 
GROUP BY source_code;

其中表D是这样的
在这里插入图片描述
表B即

SELECT A.plan_id,A.parent_pro_id,C.source_type,A.plan_name,is_clean,unit_cost,capa_scale,unit_opex
FROM gpe_pro_plan_info A,(SELECT * FROM GPE_PRO_LCOE WHERE PARENT_PRO_ID = '1281') AS C
WHERE A.parent_pro_id=C.parent_pro_id AND A.plan_id=C.plan_id

这一大串的数据
是这样:
在这里插入图片描述
最后查询结果的表:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静安书以沫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值