J'ai une table de services. J'ai besoin de fusionner deux requêtes SELECT. Les deux ont des clauses where différentes. Par exemple
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
Cela me donne un résultat
Region | OpenServices | DFC
Karaci | 14 | 4
Lahore | 13 | 3
Islamabad | 10 | 4
J'ai une autre requête
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
Ça me donne un résultat
Region | ClosedServices
Karachi | 8
Lahore | 7
Islamabad | 4
Je dois fusionner les deux résultats et afficher ClosedServices à côté de la colonne DFC.
sql-server
TheSarfaraz
la source
la source
Réponses:
Traitez vos deux jeux de résultats actuels comme des tableaux et joignez-les:
Pas le plus joli morceau de SQL que j'aie jamais écrit, mais j'espère que vous verrez comment cela fonctionne et comprendre comment le maintenir.
Je soupçonne qu'une requête plus performante serait une requête unique
SELECT
de OSCL, regroupée par U_REGN, avec chacun de vos trois compteurs en tant qu'instructions distinctesSUM(CASE ...)
semblables à ce que vous faites actuellement pour DFC. Ce sera une analyse de table unique, tout au plus, en fonction de vos index et de votre schéma.la source
S'appuyant sur la suggestion de Michael:
la source