根据最新日期过滤表记录

问题描述 投票:0回答:1

已经提出了类似的问题,但我可以找到我正在寻找的东西。由于我是SQL新手,因此无法从类似的问题中获得我的解决方案。

来自我的问题,我有一个存储客户保险详情的表格,如下所示

enter image description here

company_id下可能有多个customer_ids。正如您在图像中看到的那样,两行中的前5列可以具有相似的数据,但due_date除外。我想编写一个查询,返回每个客户的最新保险详细信息(即每个客户的最大(due_date)的唯一记录)在每个公司下。即,查询应返回以下记录

(100,548754,nia,1000000,Banglore,24-02-2020)
(100,254475,lpa,1000000,Delhi,24-02-2020)
(103,958740,cba,1000000,Banglore,24-06-2021)

我尝试了不同的查询,但所有返回重复记录

sql postgresql greatest-n-per-group
1个回答
0
投票
SELECT DISTINCT ON (company_id,customer_id) * 
FROM table 
ORDER BY company_id,customer_id,due_date DESC

如果在SELECT语句中指定DISTINCT ON (),则将获得每个集合的第一行,其中给予DISTINCT ON()的表达式具有相等的值。你需要ORDER BY来确保每个集合中的第一行是具有最新日期的那一行。

© www.soinside.com 2019 - 2024. All rights reserved.