【发布时间】:2019-09-02 09:58:21
【问题描述】:
在一行中获取两条记录
尝试了子句 group by 却没有得到想要的结果。
我有三个表:direccion、punto_suministro、r_servicio_punto_suministro。
id_direccion others_fields
10 XXX
10 YYY
id_punto_suministro id_r_servicio_punto_suministro
6 1
7 2
id_r_servicio_punto_suministro id_servicio_gas id_servicio_luz
1 6 null
2 null 7
查询:
SELECT
punto_suministro.id_direccion,
CASE WHEN r_servicio_punto_suministro.id_servicio_gas IS NOT NULL THEN punto_suministro.id_punto_suministro END AS Gas,
CASE WHEN r_servicio_punto_suministro.id_servicio_luz IS NOT NULL THEN punto_suministro.id_punto_suministro END AS Luz
FROM
direccion
LEFT JOIN punto_suministro ON direccion.id_direccion = punto_suministro.id_direccion
LEFT JOIN r_servicio_punto_suministro ON punto_suministro.id_r_servicio_punto_suministro = r_servicio_punto_suministro.id_r_servicio_punto_suministro
LEFT JOIN servicio_gas ON r_servicio_punto_suministro.id_servicio_gas = servicio_gas.id_servicio_gas
LEFT JOIN servicio_luz ON r_servicio_punto_suministro.id_servicio_luz = servicio_luz.id_servicio_luz
WHERE direccion.id_direccion = 10;
查询返回两行:
id_direccion Gas Luz
10 6 null
10 null 7
我想要一条记录中的结果:
id_direccion Gas Luz
10 6 7
【问题讨论】:
-
使用
GROUP BY和max()进行聚合