계약NO | 계약SERIAL | 차량번호 | 이름 | 가입NO | 가입SERIAL | 계약시작일 | 계약종료일 | 임급회차 | 분할회차 | 상태값 | ||
20220100051 | 001 | 000가0000 | 홍길동 | 01000101 | 000 | 20220101 | 20230101 | 1 | 4 | 4 | ||
20220100051 | 000 | 000가0000 | 홍기동 | 01000101 | 000 | 20220101 | 20230101 | 1 | 4 | 3 |
이런식으로 계약NO에 변경사항이 발생하면 계약기간은 유지하고 계약 SERIAL 이 000에서 1씩 올라갑니다. (기존데이터도 필요하기에)
표에 있는 데이터들 불러오고 싶은데 조회는 계약번호 || 계약SERIAL / 차량번호 / 가입NO || 가입SERIAL 로 조회하고있습니다.
계약번호는 1년단위로 재계약을 통해서 새로 부여하는 방식으로 계약번호가 해당 차량번호나 가입번호에 매치되어 쌓입니다.
그래서 지금 찾고 싶은 조건은 이런 조건으로 불러왔을때 즉 차량번호 / 가입번호 / 계약번호 등으로 조회시 불러오는 데이터 중 가장 위에 생성되는 (계약번호+SERIAL이가 가장최신) 것 중 상태값이 4 인것들을 찾으려고 합니다.
SELECT 계약NO, 계약SERIAL....... from TABLE where (차량번호, 계약NO) in ( select 차량번호, max(계약NO) as 계약NO from TEST group by 차량번호 ) AND 상태값 = '4' order by 차량번호;
이런식으로 풀어가려했는데, 원하는 데이터 방향이 아니더군요,
SELECT MAX(계약NO),....... FROM TABLE
WHERE 상태값 = '4' ;
이부분도 맨처음 했지만 당연히 순서가 WHERE 이 먼저라 상태값 4인것들중 계약번호가 최신값이 나와서
초기 접근은 계약번호가 MAX 값 인것들중 상태값이 4 인것들을 찾으려했는데 너무 많이나와서 계약일자로 줄여보고 해도 원하는 데이터가 안나오더라구요 ㅠㅠ 제가 어디서 접근 법이 잘못되었는지 옳바른 접근법은 뭘까요 이것저것 찾아보며 주말내내 해보아도 진행이 안되어 질문드립니다.