已经问过类似的问题,但是我可以找到我真正想要的东西。由于我是SQL新手,所以我无法从类似问题中得出解决方案。
出现我的问题,我有一个表格,用于存储如下所示的客户的保险详细信息
company_id下可能有多个customer_id。如您在图像中看到的,两行的前5列可以有相似的数据,但due_date除外。我想编写一个查询,该查询返回每个客户的最新保险明细(即,每个客户的max(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)
我尝试了不同的查询,但是所有返回的重复记录
答案 0 :(得分: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
来确保每组中的第一行都是最新日期。