При использовании FIRST / LAST вам даже не нужен подзапрос:
WITH t(ID, NAME, COMMENT_, VALUE, DateTime) AS (
SELECT 1,'Tim','Test', 100, TO_DATE('02/06/2020 15:05:12', 'dd/mm/yyyy hh24:mi:ss') FROM dual
UNION ALL SELECT 2,'Sue','House', 200, TO_DATE('03/06/2020 08:25:01', 'dd/mm/yyyy hh24:mi:ss') FROM dual
UNION ALL SELECT 1,'Tim','Test', 150, TO_DATE('02/06/2020 18:05:12', 'dd/mm/yyyy hh24:mi:ss') FROM dual
UNION ALL SELECT 3,'Doug','Cars', 680, TO_DATE('10/05/2019 04:45:10', 'dd/mm/yyyy hh24:mi:ss') FROM dual
UNION ALL SELECT 2,'Sue','Tennis', 300, TO_DATE('03/06/2020 10:35:15', 'dd/mm/yyyy hh24:mi:ss') FROM dual
UNION ALL SELECT 2,'Sue','Steets', 400, TO_DATE('10/10/2020 10:35:15', 'dd/mm/yyyy hh24:mi:ss') FROM dual)
SELECT ID,
MAX(NAME) KEEP (DENSE_RANK LAST ORDER BY DateTime) AS NAME,
MAX(COMMENT_) KEEP (DENSE_RANK LAST ORDER BY DateTime) AS COMMENT_,
MAX(VALUE) KEEP (DENSE_RANK LAST ORDER BY DateTime) AS VALUE,
MAX(DateTime) KEEP (DENSE_RANK LAST ORDER BY DateTime) AS DateTime
FROM t
GROUP BY ID, TRUNC(DateTime);
+------------------------------------------+
|ID|NAME|COMMENT_|VALUE|DATETIME |
+------------------------------------------+
|1 |Tim |Test |150 |02.06.2020 18:05:12|
|2 |Sue |Tennis |300 |03.06.2020 10:35:15|
|2 |Sue |Steets |400 |10.10.2020 10:35:15|
|3 |Doug|Cars |680 |10.05.2019 04:45:10|
+------------------------------------------+