Saltar al contenido

Combinar dos consultas SELECT con diferentes cláusulas WHERE

Indagamos por el mundo on line para así mostrarte la solución a tu problema, en caso de preguntas puedes dejar la duda y te contestaremos porque estamos para servirte.

Solución:

Trate los conjuntos de resultados de sus dos consultas actuales como tablas y únalas:

select
    FirstSet.Region,
    FirstSet.OpenServices,
    FirstSet.DFC,
    SecondSet.ClosedYesterday
from 
(
    SELECT U_REGN as 'Region', COUNT(callID) as 'OpenServices',
    SUM(CASE WHEN descrption LIKE '%DFC%' THEN 1 ELSE 0 END) 'DFC'
    FROM OSCL 
    WHERE ([status] = - 3) 
    GROUP BY U_REGN 
    --ORDER BY 'OpenServices' desc
) as FirstSet
inner join
(
    SELECT U_REGN as 'Region', 
    COUNT(callID) as 'ClosedYesterday'
    FROM OSCL
    WHERE DATEDIFF(day, closeDate, GETDATE()) = 1
    GROUP BY U_REGN
    --ORDER BY 'ClosedYesterday' desc
) as SecondSet
on FirstSet.Region = SecondSet.Region
order by FirstSet.Region

No es la parte de SQL más bonita que he escrito, pero espero que veas cómo funciona y entiendas cómo mantenerlo.

Sospecho que una consulta de mejor rendimiento sería una sola SELECT de OSCL, agrupados por U_REGN, con cada uno de sus tres contadores por separado SUM(CASE ...) declaraciones similares a lo que hace actualmente para DFC. Este será un escaneo de una sola tabla, como máximo, dependiendo de sus índices y esquema.

Partiendo de la sugerencia de Michael:

SELECT
    U_REGN AS 'Region',
    SUM(CASE WHEN [status] = -3 THEN 1 ELSE 0 END) AS 'OpenServices',
    SUM(CASE WHEN [status] = -3 AND [description] LIKE '%DFC%' THEN 1 ELSE 0 END) AS 'DFC',
    SUM(CASE WHEN DATEDIFF(day, closeDate, GETDATE()) = 1 THEN 1 ELSE 0 END) AS 'ClosedYesterday'
FROM
    OSCL
GROUP BY 
    U_REGN
ORDER BY
    'OpenServices' desc

Te mostramos las comentarios y valoraciones de los lectores

Si piensas que ha resultado provechoso este post, sería de mucha ayuda si lo compartieras con otros juniors y nos ayudes a dar difusión a esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *