在 MSSQL 查询上分组然后最大

Grouping then max on MSSQL Query

我有两个表如下。

Table 1:

ID ArtNumber Date Price
1 Article1 07.05.2022 100.00
2 Article2 07.05.2022 100.00
3 Article1 10.05.2022 100.00
4 Article2 10.05.2022 100.00

Table 2

ID ArtNumber Price
1 Article1 80.00
2 Article2 120.00

我想要 Table 1 每个 ArtNumber 的最新(日期)价格。但也想检查价格是否超过 Table 2. (Table1.Price

预期结果:

ArtNumber Price
Article2 120.00

我尝试了很多 GROUP BYORDER BYMAX()DISTINCT 组合,但都没有成功。

您可以使用简单的 greatest-n-per-group 查询:

with cte as (
    select *, row_number() over (partition by artnumber order by date desc) as rn
    from table1
)
select *
from cte
join table2 on cte.artnumber = table2.artnumber
where rn = 1 and cte.price < table2.price