Имея пункт, удовлетворяющий 2 условиям в дате - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть предложение having, которое возвращает все платежи старше 5 дней. По сути, это говорит, что если платежу 5 или более дней и он имеет тип 1, то покажите его. Теперь я хочу получить его, если платежу более 5 дней для типов 0 и 1, а затем показать его. Оба типа 0 и 1 будут иметь имя клиента, которым они поделятся, поэтому я пытаюсь сделать следующее:

  • Клиент. Платеж типа 0 - 7 дней, а платеж типа 1 - 2 дня. затем не показывать
  • Клиент B тип 0, оплата 6 дней, а тип 1 платеж 8 дней, тогда шоу

Код:

select distinct MAX(paymentDate) as payment, type, customer
group by payment
having datediff(day, MAX(paymentDate), getdate()) > 5 and type = 1

Любые предложения будут великолепны. Нам также необходимо указать агрегат Max в предложении, поскольку нам нужна только последняя дата платежа для клиента и тип.

1 Ответ

0 голосов
/ 17 апреля 2020

Я думаю, что вы ищете:

select p.*
from payments p
where type = 1 and
      paymentDate < dateadd(day, -5, convert(date, getdate()));

Я не понимаю, почему здесь будет использоваться агрегация.

...