Ищем клиентов, которые не занимались обслуживанием с нами за последние 3 года - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь найти самый последний счет клиента, который старше 3 лет, но после сверки моих результатов с фактическими записями в таблице заголовков услуг есть счета, которые были старше 3 лет.

Использование SQL Management Studio

    select [No_] as 'Customer No.', 
    sih.[Name],  
    max(sih.[No_]) as 'Last Service Invoice No.', 
    max(sih.[Posting Date]) as 'Last Service Order'
    from [Service Invoice Header]sih 
    left join [Customer] c on sih.[Customer No_] = c.[No_]


    group by c.[No_], sih.name

    having max(sih.[Posting Date]) <  DATEADD(YEAR, -3, GETDATE())
    order by sih.name

Ожидается, что я получу дату последнего выставления счета-фактуры за обслуживание старше 3 лет для каждого клиента, которому я выставил счет.

1 Ответ

0 голосов
/ 19 июня 2019

Вы, кажется, хотите:

select sih.*
from [Service Invoice Header] sih 
where sih.[Posting Date] = (select max(sih2.[Posting Date])
                            from [Service Invoice Header] sih2
                            where sih2.[Customer No_] = sih.[No_] and
                                  sih2.[Posting Date]) < DATEADD(YEAR, -3, GETDATE())
                           );

Вы не выбираете столбцы из таблицы клиентов, поэтому она не требуется. Если вам это действительно нужно, вы можете добавить его во внешний запрос.

...