更新 我设法得到1或0取决于计数,但它没有被“Servicio”列分隔所以如果有任何行匹配,一切都有1或0 ...
我有以下查询无效...它永远不会停止执行,我想要的是为每个“Servicios”列添加0或1 ......
我有三张表,“Banksphere”,“PAS”和“CAM”与“Entidades”和“Servicios”的关系
PAS和CAM没有“servicio_id”,但是我使用Servicios的“Join”来解决这个问题......那就是PAS的“Servicio”是3,CAM是0。
我希望我解释得很好......我现在不能做得更好,我不在我的电脑上
示例:
Banksphere [ id | entidad_id | servicio_id | reconocido ]
[ 1 | 3 | 9 | 0 ]
[ 2 | 1 | 1 | 1 ]
[ 3 | 4 | 6 | 0 ]
PAS [ id | entidad_id | reconocido ]
[ 1 | 3 | 0 ]
[ 2 | 5 | 1 ]
[ 3 | 4 | 0 ]
CAM [ id | entidad_id | reconocido ]
[ 1 | 0 | 1 ]
[ 2 | 0 | 1 ]
[ 3 | 0 | 1 ]
我想要的结果就是这个......
[ Entidad | Servicio | Alertas ]
[ 0 | 0 | 1 ]
[ 1 | 1 | 1 ]
[ 3 | 9 | 0 ]
[ 3 | 3 | 0 ]
[ 4 | 6 | 0 ]
[ 4 | 3 | 0 ]
[ 5 | 3 | 1 ]
有人能帮助我吗?非常感谢你......
SELECT DISTINCT entidad, value, alertas
FROM (SELECT Entidades.id AS entidad,
Servicios.nombre AS servicio1,
sp.nombre AS servicio2,
sc.nombre AS servicio3,
CASE WHEN (
CASE WHEN (SELECT COUNT(Banksphere.reconocido) FROM Banksphere WHERE Banksphere.reconocido = '0' AND Banksphere.fecha = '2012-12-18') = 0 THEN 0 ELSE 1 END
+ CASE WHEN (SELECT COUNT(PAS.reconocido) FROM PAS WHERE PAS.reconocido = '0' AND PAS.fecha = '2012-12-18') = 0 THEN 0 ELSE 1 END
+ CASE WHEN (SELECT COUNT(CAM.reconocido) FROM CAM WHERE CAM.reconocido = '0' AND CAM.fecha = '2012-12-18') = 0 THEN 0 ELSE 1 END) = 0 THEN 0 ELSE 1 END AS alertas
FROM Entidades
LEFT JOIN (Banksphere INNER JOIN Servicios
ON ( Banksphere.servicio_id = Servicios.id ))
ON Entidades.id = Banksphere.entidad_id
AND Banksphere.fecha = '2012-12-18'
LEFT JOIN (CAM
INNER JOIN Servicios sc
ON ( sc.nombre = 'CAM' ))
ON Entidades.id = CAM.entidad_id
AND CAM.fecha = '2012-12-18'
LEFT JOIN (PAS
INNER JOIN Servicios sp
ON ( sp.nombre = 'PAS' ))
ON Entidades.id = PAS.entidad_id
GROUP BY Entidades.id,
Entidades.nombre,
Servicios.nombre,
sp.nombre,
sc.nombre,
Banksphere.reconocido,
PAS.reconocido,
CAM.reconocido
)
src
UNPIVOT ( value FOR col IN (servicio1, servicio2, servicio3) ) unpiv
GROUP BY alertas, entidad, value
ORDER BY entidad ASC, value ASC