首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分组结果的SQL查询帮助

分组结果的SQL查询帮助
EN

Stack Overflow用户
提问于 2019-02-15 11:17:48
回答 2查看 36关注 0票数 0

我有一个Access表,格式如下:

CostomerID、PhoneType、LastUsedDate、PhoneNumber

我想要编写一个查询,它将按类型给出每个客户的最新电话号码。所以让我们假设我们有

代码语言:javascript
复制
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。到目前为止,我已经想出了

代码语言:javascript
复制
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和类型生成最近的日期,但是我不知道如何将对应于该数据的电话号码添加到结果中?

编辑:我应该补充说每一行也有它的唯一标识符,如果这会有帮助的话。

EN

回答 2

Stack Overflow用户

发布于 2019-02-15 11:23:47

您可以尝试使用correlated subquery

代码语言:javascript
复制
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()

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2019-02-15 11:23:16

您可以像这样使用join:

代码语言:javascript
复制
 SELECT t1.* ,t2.PhoneNumber(SELECT  p.CnBio_ID, p.Type, max(p.Subj_Date_Last_Seen_1) as axdate,p2.phonenumber
      from Phones p  GROUP BY p.CnBio_ID, p.Personal_Business, p.Type) as t1 inner join Phones as t2 on t1.CnBio_ID = t2.CnBio_ID;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54702243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档