안녕하세요
쿼리를 하다보니 도저히 답을 못찾아서 질문드립니다.
아래의 테이블에서
해당년월(날짜), 이름기준으로 seq가 MAX인 row를 가져오는 쿼리가 궁금합니다.
혹시 아시는분 꼭 알려주세요 ..ㅜㅜ
감사합니다.
1>날짜/구분1/2/3/부서/이름 동일하고 seq가 MAX인값
2>쿼리후 결과값은
아래에서부서 6개의 값이 나와야함
---------------------------------------------------
정답
202110 | 1 | T | E10 | 214027 | 1 | 1 |
202110 | 2 | B | A10 | 204005 | 1 | 1 |
202110 | 2 | B | A10 | 204005 | 1 | 3 |
202110 | 2 | B | A10 | 204005 | 2 | 2 |
202110 | 2 | B | A10 | 204005 | 2 | 1 |
202110 | 2 | B | A10 | 204005 | 1 | 2 |
---------------------------------------------------------------------------------------
문제
날짜 | seq | 구분1 | 부서 | 이름 | 구분2 | 구분3 |
202110 | 1 | B | A10 | 204005 | 1 | 2 |
202110 | 1 | B | A10 | 204005 | 2 | 1 |
202110 | 1 | T | E10 | 214027 | 1 | 1 |
202110 | 2 | B | A10 | 204005 | 1 | 1 |
202110 | 2 | B | A10 | 204005 | 1 | 3 |
202110 | 2 | B | A10 | 204005 | 2 | 2 |
202110 | 2 | B | A10 | 204005 | 2 | 1 |
202110 | 2 | B | A10 | 204005 | 1 | 2 |
WITH TMP ("날짜", seq, "구분1", "부서", "이름", "구분2", "구분3") AS ( SELECT '202110', 1, 'B', 'A10', '204005', 1, 2 FROM DUAL UNION ALL SELECT '202110', 1, 'B', 'A10', '204005', 2, 1 FROM DUAL UNION ALL SELECT '202110', 1, 'T', 'E10', '214027', 1, 1 FROM DUAL UNION ALL SELECT '202110', 2, 'B', 'A10', '204005', 1, 1 FROM DUAL UNION ALL SELECT '202110', 2, 'B', 'A10', '204005', 1, 3 FROM DUAL UNION ALL SELECT '202110', 2, 'B', 'A10', '204005', 2, 2 FROM DUAL UNION ALL SELECT '202110', 2, 'B', 'A10', '204005', 2, 1 FROM DUAL UNION ALL SELECT '202110', 2, 'B', 'A10', '204005', 1, 2 FROM DUAL ) SELECT * FROM TMP WHERE (날짜, 이름, seq) IN ((SELECT 날짜, 이름, MAX(seq) FROM TMP GROUP BY 날짜, 이름))