[英]sql server complex join query
我有以下查詢,它正在工作,但我得到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
您應該能夠使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.