sql - MS Access - 通过聚合函数进行选择
问题描述
我有下表。我想做两件事:我想为拥有多个活动条目的所有人员选择所有行。
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 where DateUpdated<>Max(DateUpdated) 。因此,对于 John,应将 09/02/2018 的行设置为 False(因为有 17/02/2018)对于 Susan 17/01/2018 的行应设置为 False 而 Zara 的 05/09/2018 和2018 年 12 月 7 日应设置为 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
推荐阅读
- c++ - 打印从任意元素到矩阵中给定元素的最短路径的值
- javascript - 单击父级时如何获取子级名称
- html - css - 改变 svg 和路径的 css 颜色
- javascript - Chrome 和 Javascript 如何检测网页中的特定文本值并将其保存为变量
- javascript - 在Javascript中定义一个没有对象的getter?
- c# - ASP.NET Web API 文件上传
- javascript - 需要带有打字稿的nodejs中的模块
- python-3.x - Matplotlib 错误:x 和 y 的第一维不同
- c++ - 为什么加法输出总是0?
- php - 作曲家自动加载:在生产中找不到类,在本地工作