Eu tenho uma tabela de serviços. Eu preciso mesclar duas consultas SELECT. Ambos têm cláusulas where diferentes. Por exemplo
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
Isso me dá resultado
Region | OpenServices | DFC
Karaci | 14 | 4
Lahore | 13 | 3
Islamabad | 10 | 4
Eu tenho outra 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
Isso me dá resultado
Region | ClosedServices
Karachi | 8
Lahore | 7
Islamabad | 4
Preciso mesclar os dois resultados e mostrar ClosedServices ao lado da coluna DFC.
sql-server
TheSarfaraz
fonte
fonte
Respostas:
Trate os conjuntos de resultados das suas duas consultas atuais como tabelas e junte-se a eles:
Não é o bit mais bonito de SQL que já escrevi, mas espero que você veja como funciona e entenda como mantê-lo.
Suspeito que uma consulta com melhor desempenho seja única
SELECT
na OSCL, agrupada por U_REGN, com cada um dos seus três contadores comoSUM(CASE ...)
instruções separadas , semelhantes ao que você faz atualmente para o DFC. Essa será uma varredura de tabela única, no máximo, dependendo de seus índices e esquema.fonte
Construindo a sugestão de Michael:
fonte