I have a dataset with several values for the same medical procedure. I want to select the value where date_ref
is max but I am not getting how to do that. Below it is an example of the dataset
PROC_CODE | VALUE | DATE
123456 20.90 2020-01-01
123456 30.00 2021-01-01
123456 15.47 2022-06-01
I want to return only the last row of the dataset, which assigns VALUE
for the most recent date
PROC_CODE | VALUE | DATE
123456 15.47 2022-06-01
I tried the following code but it returns an error. What I am missing in my logic?
SELECT
PROC_CODE, VALUE
FROM MY_TABLE
WHERE MAX(DATE)
GROUP BY PROC_CODE -- Only grouping by PROC_CODE because grouping by PROC_CODE and VALUE returns the 3 lines of the dataset
CodePudding user response:
You can use a subquery in your WHERE clause to do this:
SELECT PROC_CODE, VALUE, DATE
FROM MY_TABLE
WHERE DATE = (SELECT MAX(DATE) FROM MY_TABLE);
If you are wanting the value for the max date for each proc_code, then a correlated subquery will work as well:
SELECT PROC_CODE, VALUE, DATE
FROM MY_TABLE as MT
WHERE DATE = (SELECT MAX(DATE) FROM MY_TABLE WHERE PROC_CODE = MT.PROC_CODE);