안녕하세요
가장 최근 날짜의 데이터와 그에 맞는 값을 조회하려고하는데
오라클과 달리 mariadb에서는 group by 후 order by desc를 적용하니 그냥 맨 처음값을 가져옵니다.
최근날짜는 max로 해결했는데 가장 최근의 amt값은 어떻게 가져올수있을까요?
현재 쿼리는 이렇게 만들었습니다.
select trnsctn_dt, a.id, amt, from (select max(trnsctn_dt) as trnsctn_dt, id, amt from table where trnsctn_dt >= curdate() - interval 0 day group by id order by trnsctn_dt desc) as a join table b on a.id = b.id group by a.id order by trnsctn_dt desc;
-- 1. 분석함수 지원 버전(10.0 ?)인 경우 SELECT id , trnsctn_dt , amt FROM (SELECT id , trnsctn_dt , amt , ROW_NUMBER() OVER(PARTITION BY id ORDER BY trnsctn_dt DESC) rn FROM table1 WHERE trnsctn_dt >= CURDATE() ) a WHERE rn = 1 ;
-- 1. 분석함수 미지원 버전인 경우 SELECT a.id , a.trnsctn_dt , b.amt FROM (SELECT id , MAX(trnsctn_dt) trnsctn_dt FROM table1 WHERE trnsctn_dt >= CURDATE() GROUP BY id ) a INNER JOIN table1 b ON a.id = b.id AND a.trnsctn_dt = b.trnsctn_dt ;