sql - 分组结果的 SQL 查询帮助
问题描述
我有一个具有以下格式的访问表:
CostomerID、PhoneType、LastUsedDate、PhoneNumber
我想编写一个查询,按类型为我提供每个客户的最新电话号码。所以假设我们有
CostomerID, PhoneType, LastUsedDate, PhoneNumber
987/Landline/201809/555-343-9017
987/Landline/201610/555-397-0975
987/Cell/201811/555-870-1862
我希望查询为客户 987 生成结果,他的座机号码来自 201809,他的手机号码来自 201811。到目前为止,我已经想出了
SELECT p.CnBio_ID, p.Type, max(p.Subj_Date_Last_Seen_1) as maxdate
from Phones p
GROUP BY p.CnBio_ID, p.Personal_Business, p.Type
这会生成每个 ID 和类型的最新日期,但我不知道如何将与该数据对应的电话号码添加到结果中?
编辑:我应该补充一点,每一行也有它的唯一标识符,如果有帮助的话。
解决方案
你可以试试correlated subquery
SELECT p.CnBio_ID, p.Type, p.Subj_Date_Last_Seen_1 as maxdate
from Phones p
where p.Subj_Date_Last_Seen_1 in (select max(p.Subj_Date_Last_Seen_1) from phones p1
where p1.CnBio_ID=p.CnBio_ID and p1.Type=p.Type group by p1.CnBio_ID, p1.Type)
或者您可以尝试使用row_number()
select * from
(
SELECT p.CnBio_ID, p.Type, p.Subj_Date_Last_Seen_1,row_number() over(partition by p.CnBio_ID, p.Type order by p.Subj_Date_Last_Seen_1 desc) as rn
from Phones p
)A where rn=1
推荐阅读
- azure-devops - Azure DevOps API - 设置板选项
- ios - 当 UITable 视图在下拉 iOS 中显示和隐藏时如何向上/向下移动视图
- java - 使用 Maven 在 JRE 6 下编译执行
- sockets - socket.broadcast.to().emit() 与 socket.to().emit()
- android - 如何从列表中(随机)删除项目并维护 ListView
- react-navigation - 如何将 createMaterialTopTabNavigator 向右对齐
- c# - 无法从列中检索具有空值的数据
- python - Python循环数据框中的值并更改为二进制值
- splunk - 如何在自定义搜索命令 Splunk 中传递凭据
- html - Node js中的主体未定义