1

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

0 回答 0