Я пытаюсь оценить, сколько раз транзакция запускается в данном месяце в нашей системе для процесса сверки.
Ссылка на транзакцию может быть создана в предыдущем месяце, поэтому я пытаюсь исключить эти транзакции из итогового счета - первой мыслью было использование подхода типа «ГДЕ ВХОД», но результат всегда равен 0, чтоэто определенно неправильно, так как когда я выполняю запросы изолированно, в подзапросе есть записи, которые следует исключить.
Я прочитал, что запросы типа "WHERE IN" ненадежны, особенно когда в подзапросе возвращаются большие наборы данных, но я не знаю, как переработать этот, чтобы достичь цели в этом случаеи идти вперед, если этот способ сделать его некорректным.
Текущий запрос показан ниже - спасибо за вашу помощь:
SELECT Count(DISTINCT TransactionRef)
FROM Payments
WHERE Month(PaymentDate) = 8
AND Year(PaymentDate) = 2011
AND TransactionRef NOT IN
(SELECT DISTINCT TransactionRef
FROM Payments WHERE PaymentDate < '20110801')
РЕДАКТИРОВАТЬ ОК, далее к ответам, кажется, что нулевое значение делало меня неправильно ... спасибо - вот отредактированный код на случай, если кто-то споткнется здесь в будущем:
SELECT Count(DISTINCT TransactionRef)
FROM Payments
WHERE Month(PaymentDate) = 8
AND Year(PaymentDate) = 2011
AND TransactionRef NOT IN
(SELECT DISTINCT TransactionRef
FROM Payments WHERE TransactionRef IS NOT NULL AND PaymentDate < '20110801')