我有一个Access表,格式如下:
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和类型生成最近的日期,但是我不知道如何将对应于该数据的电话号码添加到结果中?
编辑:我应该补充说每一行也有它的唯一标识符,如果这会有帮助的话。
发布于 2019-02-15 11:23:47
您可以尝试使用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发布于 2019-02-15 11:23:16
您可以像这样使用join:
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;https://stackoverflow.com/questions/54702243
复制相似问题