[英]MS Access - Selecting via an aggregate function
我有下表。 我想做两件事:我想为具有多个“活动条目”的所有人员选择所有行。
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的所有行(因为每行在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)。 因此对于John来说,将09/02/2018的行设置为False(因为存在17/02/2018)对于Susan 17/01/2018的行应设置为False And Zara the 05/09/2018 and 12/07/2018应设置为False。
有人可以帮忙吗? (将不胜感激,在此先感谢!)。
尝试加入一个子查询,该子查询仅限制具有多个活动条目的匹配名称:
SELECT t1.*
FROM tempTableTest t1
INNER JOIN
(
SELECT PersonName
FROM tempTableTest
WHERE Active = True
GROUP BY PersonName
HAVING COUNT(*) > 1
) t2
ON t1.PersonName = t2.PersonName
您可以使用EXISTS
子句来测试是否存在特定条件:
SELECT t.*
FROM tempTableTest t
WHERE EXISTS(
SELECT 1
FROM tempTableTest s
WHERE s.Active=True AND s.PersonName = t.PersonName
GROUP BY PersonName
HAVING Count(*) > 1
)
您可以使用EXISTS
:
SELECT t.*
FROM tempTableTest t
WHERE EXISTS (SELECT 1
FROM tempTableTest t1
WHERE t1.PersonName = t.PersonName AND t1.Active = True AND t1.Address <> t.Address
);
这是一个更新查询。
UPDATE
t52293469 AS T
SET
T.Active = False, T.PersonName = "a", T.DateUpdated = Now()
WHERE
(
((T.Active)=True)
AND ((Exists (SELECT 1
FROM t52293469 t1
WHERE t1.PersonName = t.PersonName AND t1.Active = True AND t1.DateUpdated >t.DateUpdated
))=True)
);
那会更新约翰,苏珊和扎拉
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.