J'ai 2 requêtes dans MS SQL qui renvoient un nombre de résultats en utilisant la fonction COUNT.
Je peux exécuter la première requête et obtenir le premier résultat, puis exécuter l'autre pour obtenir l'autre résultat, les soustraire et trouver les résultats. Cependant, existe-t-il un moyen de combiner les 3 fonctions et d'obtenir un résultat global?
Comme dans: exécuter SQL1 exécuter SQL2 exécuter SQL3 (sql1-sql2)? ....
Je les ai essayés avec xxxx en tant que fonction mais pas de chance.
Vous devriez pouvoir utiliser des sous-requêtes pour cela:
SELECT
(SELECT COUNT(*) FROM ... WHERE ...)
- (SELECT COUNT(*) FROM ... WHERE ...) AS Difference
Je viens de le tester:
Difference
-----------
45
(1 row(s) affected)
SELECT (SELECT COUNT(*) FROM t1) - (SELECT COUNT(*) FROM t2)
Je sais que ceci est un ancien post mais voici une autre solution qui correspond le mieux à mes besoins
SELECT c1-c2 from (select count(*) c1 from t1), (SELECT COUNT(*) c2 from t2);
Créez simplement une fonction en ligne avec votre logique de requête et demandez-lui de renvoyer le résultat. Transmettez les paramètres si nécessaire.
select @result = (select count(0) from table1) - (select count(0) from table2)
SELECT
t1.HowManyInTable1
,t2.HowManyInTable2
,t1.HowManyInTable1 = t2.HowManyInTable2 Table1_minus_Table2
from (select count(*) HowManyInTable1 from Table1) t1
cross join (select count(*) HowManyInTable2 from Table2) t2
SELECT (count(*) from t1) - (count(*) from t2);
cela a fonctionné pour moi.
Aussi, s'il n'y a qu'une seule table, vous pouvez aussi faire:
SELECT (count(column1)) - count(column2)) from table;
SELECT (sélectionnez COUNT (FIRSTNAME) FROM TRMDW.EMPLOYEE1) - (SELECT COUNT (NOM DU PRÉNOM)) DANS TRMDW.EMPLOYEE1) en tant que différence avec dual;
((SELECT SUBSTRING_INDEX (SUBSTRING_INDEX (m, '/', 2), '/', - 1)) FROM ms WHERE ms.id = t.m_id) - (SELECT COUNT (id) DE t AS tr WHERE tr.m_id = t.m_id) ) AS restant