Вычитание двух запросов sql

У меня есть 2 запроса в MS SQL, которые возвращают ряд результатов, используя функцию COUNT.

Я могу запустить первый запрос и получить первый результат, а затем запустить другой, чтобы получить другой результат, вычесть их и найти результаты; однако есть способ объединить все 3 функции и получить 1 общий результат

Как в: запустите sql1 запустите sql2 запустите SQL3 (sql1-sql2)?....

Я попробовал их с xxxx как функцией, но не повезло.

Ответы

Ответ 1

Вы можете использовать подзапросы для этого:

SELECT
    (SELECT COUNT(*) FROM ... WHERE ...)
  - (SELECT COUNT(*) FROM ... WHERE ...) AS Difference

Просто протестировал его:

Difference
-----------
45

(1 row(s) affected)

Ответ 2

SELECT (SELECT COUNT(*) FROM t1) - (SELECT COUNT(*) FROM t2)

Ответ 3

Я знаю, что это старый пост, но вот еще одно решение, которое наилучшим образом отвечает моим потребностям (проверено на firebird)

SELECT c1-c2 from (select count(*) c1 from t1), (SELECT COUNT(*) c2 from t2);

Ответ 4

Запрос как ниже:

SELECT (select COUNT(FIRSTNAME) FROM TRMDW.EMPLOYEE1) - (SELECT COUNT(DISTINCT FIRSTNAME) FROM TRMDW.EMPLOYEE1) as difference from dual;

Ответ 5

Просто создайте встроенную функцию с логикой запроса и верните результат. При необходимости передайте параметры.

Ответ 6

select @result = (select count(0) from table1) - (select count(0) from table2)

Ответ 7

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

Ответ 8

SELECT (count(*) from t1) - (count(*) from t2);

это сработало для меня.

Также, если есть только одна таблица, вы также можете сделать:

SELECT (count(column1)) - count(column2)) from table; 

Ответ 9

Запрос как ниже:

((SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(m,'/',2),'/',-1) 
FROM ms WHERE ms.id=t.m_id)-(SELECT COUNT(id) FROM t AS tr WHERE tr.m_id=t.m_id)) AS remaining