1

UPDATE カウントに応じて1または0を取得できましたが、「Servicio」列で区切られていないため、一致する行がある場合、すべてが1または0になります...

機能していない次のクエリがあります...実行が停止することはありません。必要なのは、各「Servicios」列に0または1を追加することです...

「Entidades」と「Servicios」との関係で、「Banksphere」、「PAS」、「CAM」の 3 つのテーブルがあります。

PAS と CAM には "servicio_id" がありませんが、Servicios の "Join" を使用して修正します... OK PAS の "Servicio" は 3 で、CAM は 0 です。

うまく説明できたと思います...今はうまくできません。PCを使用していません。

例:

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      ]

私が欲しいresulsetはこれです....

[ 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