I have 2 tables
Sys_Log
request_id request_date
----------------------------
1 2022-01-01
2 2022-01-02
Values
request_id city country
---------------------------------
1 Berlin DE
1 Dortmund DE
1 Dresden DE
1 Paris FR
1 London EN
2 Dublin IR
2 Bochum DE
2 Essen DE
2 Herne DE
I am trying to create a view where only the data from the last request (max request_id) will be displayed.
Ideal result
request_id city country request_date
----------------------------------------------
2 Dublin IR 2022-01-02
2 Bochum DE 2022-01-02
2 Essen DE 2022-01-02
2 Herne DE 2022-01-02
So far I made one where request id is matched in both tables
SELECT * FROM (SELECT DISTINCT city,
country,
sys_log.request_id,
sys_log.request_date
FROM public."Values" AS VAL
LEFT JOIN (
SELECT sys.request_date,
sys.request_id
FROM public."Sys_Log" AS sys
) AS sys_log ON sys_log.request_id = VAL.request_id
WHERE VAL.request_id IS NOT NULL) AS VAL_View
I am not sure how to proceed, with max(request_id) I am getting an error.
SELECT * FROM (SELECT DISTINCT city,
country,
sys_log.request_id,
sys_log.request_date
FROM public."Values" AS VAL
LEFT JOIN (
SELECT sys.request_date,
max(sys.request_id) as max_ri
FROM public."Sys_Log" AS sys
) AS sys_log ON sys_log.max_ri= VAL.request_id
WHERE VAL.request_id IS NOT NULL) AS VAL_View
Error:
Spalte »sys.request_date« muss in der GROUP-BY-Klausel erscheinen oder in einer Aggregatfunktion verwendet werden
Like the sys.request_date has to be used in GROUP-BY or in an agg. function.