最终的查询语句是这样的:
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
这一大串的数据
是这样:

最后查询结果的表:

SQL查询案例
本文提供了一个复杂的SQL查询案例,展示了如何从多个表中选取特定数据并进行分组汇总。重点介绍了使用CASE WHEN语句来根据不同条件获取最大值的方法。
4934

被折叠的 条评论
为什么被折叠?



