I have an Oracle query
select max(m.id),
m.someId keep (DENSE_RANK FIRST ORDER BY m.UpdateDate desc)
from MyTable m
groupBy m.someId
That will work absolutely. Try first, then argue. When you have multiple order by you can do this(example made on Oracle):
-- this one with keep dense_rank
WITH a AS (SELECT 1 s1, 4 s2, 'a' c, 10 g FROM dual UNION all
SELECT 2 s1, 2 s2, 'b' c, 10 g FROM dual UNION ALL
SELECT 3 s1, 1 s2, 'c' c, 20 g FROM dual UNION ALL
SELECT 4 s1, 3 s2, 'd' c, 20 g FROM dual)
SELECT g,
MAX(c) KEEP (DENSE_RANK FIRST ORDER BY s1) s1,
MAX(c) KEEP (DENSE_RANK FIRST ORDER BY s2) s2
FROM a
GROUP BY g
-- This one without keep dense_rank
WITH a AS (SELECT 1 s1, 4 s2, 'a' c, 10 g FROM dual UNION all
SELECT 2 s1, 2 s2, 'b' c, 10 g FROM dual UNION ALL
SELECT 3 s1, 1 s2, 'c' c, 20 g FROM dual UNION ALL
SELECT 4 s1, 3 s2, 'd' c, 20 g FROM dual)
SELECT g,
MAX(DECODE(s1, 1, c)) s1,
MAX(DECODE(s2, 1, c)) s2
FROM (SELECT g,c,
ROW_NUMBER() OVER (PARTITION BY g ORDER BY s1) s1,
ROW_NUMBER() OVER (PARTITION BY g ORDER BY s2) s2
FROM a) b
GROUP BY g