使用WHERE IN子句的SQL查询

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

这可能很简单,但我是SQL新手,无法找到完全如何做到这一点。

我有以下表格:

我的要求如下:

对于每个Dim,我需要每个频率,我需要最新日期和最新日期的最新版本。例如:Dim'A'和频率'每月'将有一行及其最新日期和最新日期的最高版本。 Dim'A'和频率'Weekly'将会有另一行,包括他们的最新日期和最新日期的最新版本。

有人可以帮帮我吗?

我尝试使用以下查询,但它没有返回正确的值:

SELECT Dim, Frequency, Date, Version
               FROM   sample_tbl 
               WHERE  ( Frequency, Date, 
                        Version ) IN ( 
select Frequency, max(Date), max(Version)
from sample_tbl
group by 1
);
sql postgresql
1个回答
1
投票

我Postgres,我认为distinct on做你想要的:

select distinct on (dim, frequency) s.*
from sample_tbl s
order by dim, frequency, date desc, version desc;

对于每个dim / frequency组合,这将返回一行。该行是基于order by子句遇到的第一行。

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