Tengo una tabla de servicios. Necesito fusionar dos consultas SELECT. Ambos tienen diferentes cláusulas where. Por ejemplo
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
Esto me da resultado
Region | OpenServices | DFC
Karaci | 14 | 4
Lahore | 13 | 3
Islamabad | 10 | 4
Tengo otra consulta
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
Me da resultado
Region | ClosedServices
Karachi | 8
Lahore | 7
Islamabad | 4
Necesito fusionar ambos resultados y mostrar ClosedServices al lado de la columna DFC.
sql-server
TheSarfaraz
fuente
fuente
Respuestas:
Trate los conjuntos de resultados de sus dos consultas actuales como tablas y únalas:
No es el bit de SQL más bonito 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 única
SELECT
de OSCL, agrupada por U_REGN, con cada uno de sus tres contadores comoSUM(CASE ...)
declaraciones separadas 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.fuente
Partiendo de la sugerencia de Michael:
fuente