更新 我已经设法得到 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