Как вернуть дату изменения поля в таблице истории - PullRequest
0 голосов
/ 26 июня 2019

Я использую базу данных MS SQL Server 2012.Я запрашиваю таблицу истории клиентов, которая регистрирует каждый раз, когда клиент меняет свои данные.Они могут изменить свое имя, номер телефона, адрес и т. Д.

Новая строка вставляется с отметкой времени и даты при каждом изменении какого-либо из полей сведений о клиенте, включая каждое поле во всей записи клиента, будь то это полебыл изменен или нет.

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

Я пробовал несколько разных типов запросов, но безуспешно. Такие функции, как LAG или QUALIFY, которые я читал об использовании для этого в других вариантах SQL, похоже, не существуют в SQL Server..

SELECT CH.CustomerID,
       MAX(CH.UpdateDate) AS LastAddressUpdate
  FROM CustomerHistory CH
 WHERE CH.Postcode NOT IN ...

Мне нужен идентификатор клиента и самая последняя дата изменения почтового индекса

1 Ответ

1 голос
/ 26 июня 2019

Вы можете использовать lag():

select customerid, max(updatedate)
from (select ch.*, lag(postcode) over (partition by customerid order by updatedate) as prev_postcode
      from customerhistory ch
     ) ch
where prev_postcode <> postcode
group by customerid;

Примечание. Предполагается, что postcode не null.Запрос можно изменить, чтобы учесть это, если это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...