안녕하세요 특정 데이터를 ibaits에서 select 해오는 쿼리가 있는데요 어떤 글이 최초 등록 되면 flag 값이 reg로 인서트 되고 수정하게되면 이력을 남겨야 해서 flag 값이 upd로 새로 인서트 되는 형식입니다. 하지만 현재 쿼리문은 flag = reg 일때만 셀렉트를 해오기 떄문에 수정된 이력은 보이지 않습니다.
그래서 질문 드리고 싶은것이 flag 컬럼 값이 reg 일때와 upd 일때 모두 값을 가지고 오고 싶습니다. upd 일때는 가장 최근에 수정된 값만 가지고 와야 하기때문에 동적 쿼리문을 쓰면 될거 같긴한데 동적 쿼리문 말고 쓸 방법은 없을까 질문 드립니다. 감사합니다.
-- 오라클 기준
WITH tmpT (value_a, hist_grp, flag, hist_date) AS ( SELECT '값1 로그1' , '1', 'upd', '20210401' FROM DUAL UNION ALL SELECT '값1 로그2' , '1', 'upd', '20210402' FROM DUAL UNION ALL SELECT '값1 로그3' , '1', 'upd', '20210403' FROM DUAL UNION ALL SELECT '값1 처음로그','1','reg', '20210201' FROM DUAL UNION ALL SELECT '값2 로그2' , '2', 'upd', '20210205' FROM DUAL UNION ALL SELECT '값2 로그1' , '2', 'upd', '20210203' FROM DUAL UNION ALL SELECT '값2 처음로그','2','reg', '20210201' FROM DUAL ) SELECT * FROM ( SELECT value_a, hist_grp, flag, hist_date , ROW_NUMBER() OVER( PARTITION BY hist_grp ORDER BY DECODE(flag, 'reg', 1, 2) ASC, hist_date DESC ) AS hist_num FROM tmpT ) Tbl WHERE hist_num < 3 ORDER BY hist_grp , hist_num DESC