I have two tables as follows.
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 |
I want for Table 1 the newest (Date) price for each ArtNumber. But also want to then check if the price is more than in Table 2. (Table1.Price<Table2.Price)
Expected result:
ArtNumber | Price |
---|---|
Article2 | 120.00 |
I have tried a lot of GROUP BY
, ORDER BY
, MAX()
and DISTINCT
combinations without success.
CodePudding user response:
You can use a simple greatest-n-per-group query:
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