У меня есть таблица потребителей, в которой есть столбцы - Email, AccountState и DateCreated
AccountState может иметь значения 1 (активный), 2 (неактивный) и 3 (в архиве)
Aконкретный потребитель может иметь несколько строк, состоящих из вышеуказанного состояния учетной записи.
Я пытаюсь создать запрос, который возвращает следующее
A.Список записей о потребителях для каждого потребителя (с использованием адреса электронной почты)
B.Только записи, которые не являются самыми последними (поэтому, если на конкретном адресе электронной почты есть 3 записи, по 1 для каждого состояния, будут возвращены 2, которые не являются самыми последними)
Затем, как только у меня будет этоlist Я хочу установить все эти состояния на 3, так как они должны быть заархивированы.
Так что для примера данных, показанных здесь
Только строки 13 - 16будет возвращен.
Я пытался сделать это, используя запрос ниже, но он не работает.
SELECT con.Email,
con.Id,
con.DateCreated AS DateRegistered,
con.DateLastActivity,
con.hasiPhone,
con.hasAndroid,
con.hasSMS,
con.CurrencyCode AS Currency,
con.AccountState
FROM Consumer con
WHERE con.AccountState <> 1
AND DateCreated =( SELECT MAX(DateCreated)
FROM Consumer con_most_recent
WHERE con_most_recent.AccountState <> 1
AND con_most_recent.Id = con.Id)
order by Email asc