У меня есть следующая таблица. Я хотел бы сделать две вещи:
Я хотел бы выбрать все строки для всех людей, имеющих более одной активной записи.
PersonName Address Active DateUpdated
Adam Paris False 09/08/2018
Adam Dubai True 17/02/2018
Brendan New York False 17/02/2018
John Dublin True 17/02/2018
John London True 09/02/2018
Mike Miami False 10/02/2018
Mike Singapore False 01/02/2018
Mike New York True 01/03/2018
Susan Los Angeles True 19/02/2018
Susan Las Vegas True 17/01/2018
Zara Berlin True 05/09/2018
Zara Madrid True 12/07/2018
Zara Houston False 12/09/2018
Запрос:
select PersonName,Count(PersonName)
from tempTableTest where Active=True
group by PersonName
Придает
PersonName Expr1001
Adam 1
John 2
Mike 1
Susan 2
Zara 2
Таким образом, в моей результирующей таблице должны быть все строки, в которых PersonName = John, Susan или Zara (поскольку каждая из них имеет более 1 записи, где Active = True). И я ожидаю, что это будет выглядеть так -
PersonName Address DateUpdated Active
John London 09/02/2018 True
John Dublin 17/02/2018 True
Susan Las Vegas 17/01/2018 True
Susan Los Angeles 19/02/2018 True
Zara Berlin 05/09/2018 True
Zara Madrid 12/07/2018 True
Zara Houston 12/09/2018 False
Я также хотел бы обновить Active = False, где DateUpdated <> Max (DateUpdated), если это имеет смысл.
Так что для Джона строка с 09/02/2018 должна быть установлена в False (потому что есть 17/02/2018)
Для Сьюзен 17/01/2018 строка должна быть установлена в False
И Зара 09.05.2008 и 12.07.08 должна быть установлена в False.
Кто-нибудь может помочь? (Буду очень признателен, спасибо заранее!).