Я мог бы предложить следующее в качестве альтернативы условной агрегации:
select a.c1 - b.c2
from
(select count(*) as c1 from db1 where db1.[creation date] > Date()-7) a,
(select count(*) as c2 from db1 where db1.[completed date] > Date()-7) b
Выше используется декартово произведение (также известное как перекрестное соединение).Это означает, что для каждой записи, выводимой из первой таблицы, каждая запись выводится из второй таблицы (т. Е. Общее количество выводимых записей - это количество записей в каждой таблице, умноженных вместе).
Однако, посколькукаждый подзапрос в этом конкретном декартовом произведении будет когда-либо возвращать одну запись (результат count(*)
для заданных условий), окончательный результат получен из набора данных, состоящего из записи 1x1 = 1, содержащей два значениябыть вычтенным.