查询仅显示字段中的最新日期,而所有SELECTS都不在GROUP中

时间:2018-05-30 22:48:17

标签: sql max inner-join

**重写以澄清。 **我已经在多个网站上查看了十几个帖子,试图解决这个问题并尝试应用所提到的内容 - 一切都没有运气。我有一个连接3个表的查询。我在SELECT区域中使用MAX(日期)以及其他9个字段。我正在做的事情要求我列出GROUP BY区域中的所有字段,以便运行查询。我显然做错了什么。

理想情况下,我希望查询根据最近的条目仅为一个人返回1条记录。因此,具有唯一ID的人可能有3条记录,因为3个日期条目。我希望那一行有最新的日期条目。对不起,如果这很明显是泥。想法? TIA!

SELECT 
DISTINCT s.ID, s.FIRST_NAME, s.LAST_NAME, a.ADDR1, a.CITY, a.STATE, a.ZIP, e.EFF_DT, e.TERM_DT, MAX(e.MEPE_EFF_DT)
FROM SUBSC s

INNER JOIN ADDR a 
on s.SID = a.SID

INNER JOIN ELIG e
on e.EID = s.EID

WHERE a.GID = 99
AND e.ELIG_IND = 'Y'

GROUP BY s.ID, s.FIRST_NAME, s.LAST_NAME, a.ADDR1, a.CITY, a.STATE, a.ZIP, e.EFF_DT, e.TERM_DT

ORDER BY s.LAST_NAME ASC

1 个答案:

答案 0 :(得分:0)

您不希望group by。你想要过滤。一种方法是:

select t1.*
from table_1 t1
where t1.date = (select max(tt1.date) from table_1 tt1 where tt1.? = t1.?);

您的查询有点不清楚哪些列是什么。 ?用于标识每个客户的列。