У меня есть следующий запрос:
select count(ords.TRACKING_NUM)
from Orders ords (NoLock)
group by ords.TRACKING_NUM
having count(distinct ords.ORDER_NUM) = 4
Я хочу, чтобы он извлек общее количество TRACKING_NUM, на которых есть 4 ORDER_NUM (должно быть 3352). Вместо этого я получаю 3352 строки, равные 4 (или больше из-за различий).
Я понимаю, почему это происходит. Он подсчитывает значения внутри каждой группы. И я могу легко изменить запрос на это:
select ords.TRACKING_NUM
from Orders ords (NoLock)
group by ords.TRACKING_NUM
having count(distinct ords.ORDER_NUM) = 4
а затем он возвращает мне 3352 строки TRACKING_NUM. Однако это не очень эффективно для моей базы данных (занимает около 41 секунды). Что мне действительно нужно, так это запрос, который даст мне счет и только счет (и, надеюсь, делая это быстрее).
Спасибо за любые предложения.