我有以下查询,它正在工作,但我得到4列(3个命名方式相同)因为我想要的只是得到两列数据,“Entidad”和“Servicio”但找不到这样做..
SELECT
Entidades.nombre as entidad,
Servicios.nombre as servicio,
sp.nombre as servicio,
sc.nombre as servicio
FROM
Entidades
LEFT JOIN Banksphere
INNER JOIN Servicios
ON Banksphere.servicio_id = Servicios.id
ON Entidades.id = Banksphere.entidad_id
LEFT JOIN PAS
INNER JOIN Servicios sp
ON sp.id = 3
ON Entidades.id = PAS.entidad_id
LEFT JOIN CAM
INNER JOIN Servicios sc
ON sc.id = 0
ON Entidades.id = CAM.entidad_id
GROUP BY
Entidades.id, Entidades.nombre, Servicios.nombre, sp.nombre, sc.nombre
ORDER BY
Entidades.id
我得到的结构就是这个
Entidad | Servicio | Servicio | Servicio
Corporativo | Abacon | NULL | CAM
Corporativo | MCI | NULL | CAM
Santander | Sales | PAS | NULL
但我想要这个......
Entidad | Servicio
Corporativo | Abacon
Corporativo | MCI
Corporativo | CAM
Santander | Sales
Santander | PAS
答案 0 :(得分:2)
您应该可以使用UNPIVOT
功能:
select DISTINCT entidad, value -- use distinct if you want to remove duplicates
from
(
SELECT
Entidades.nombre as entidad,
Servicios.nombre as servicio1,
sp.nombre as servicio2,
sc.nombre as servicio3
FROM
Entidades
LEFT JOIN
(Banksphere INNER JOIN Servicios
ON (Banksphere.servicio_id = Servicios.id))
ON Entidades.id = Banksphere.entidad_id
LEFT JOIN
(PAS INNER JOIN Servicios sp
ON (sp.id = 3))
ON Entidades.id = PAS.entidad_id
LEFT JOIN
(CAM INNER JOIN Servicios sc
ON (sc.id = 0))
ON Entidades.id = CAM.entidad_id
GROUP BY
Entidades.id, Entidades.nombre, Servicios.nombre, sp.nombre, sc.nombre
) src
unpivot
(
value
for col in (servicio1, servicio2, servicio3)
) unpiv