select lc.cust_no 고객번호 ,ms.acco_no 계좌번호 ,ms.bal_loan 잔액 ,lc.amt_io_in 이자 ,lc.amt_io_un 연체료 from a_savems ms, l_loancalc lc where ms.cust_no = lc.cust_no and not ms.aclg_ty in('GJ') and lc.proc_date = '20190331' and ms.basic_date = '20190331'
////////////////////////////////////////////////////////////////
결과처럼 띄우려 쿼리 짜고 있었습니다.
조건은 대출상품종류(가지급금 제외) 를 3건 이상 가지고 있는 고객에 대해 조회를 하는것인데
기준 키 값은 date 20190331 을 잡는것이며
aclg_ty가 대출상품 컬럼이라 가지급금 'GJ' 를 제외시켰는으며,
(이외에도 aclg_ty에는 DF , DD , EP 등 5개가 더 있음)
한계좌에 3건 이상의 상품이 조회되면 중복계좌가 출력되는 것은 distinct 쓰면 될 꺼라 생각하고
나머지는 대출상품종류 3건 이상 가지고 있는 고객에 막혔습니다.
어떤 쿼리문을 써야 3건 이상 가지고 있는 고객을 조회 할 수 있을까여
<결과>
고객번호 | 계좌번호 | 잔액 | 이자 | 연체료 | ||
|
|
99,123,400 | 1,411,789 | 921,845 | ||
|
|
300,000 | 0 | 0 | ||
|
|
150,741 | 0 | 0 | ||
|
|
74,123,400 | 0 | 0 | ||
|
|
5,000,000 | 541,202 |
0 |
SELECT * FROM (SELECT lc.cust_no 고객번호 , ms.acco_no 계좌번호 , ms.bal_loan 잔액 , lc.amt_io_in 이자 , lc.amt_io_un 연체료 , COUNT(DISTINCT ms.aclg_ty) OVER(PARTITION BY lc.cust_no) cnt FROM a_savems ms , l_loancalc lc WHERE ms.cust_no = lc.cust_no AND ms.aclg_ty != 'GJ' AND lc.proc_date = '20190331' AND ms.basic_date = '20190331' ) a WHERE cnt >= 3 ;
넹 aclg_no로 조인을 하니깐 값이 아무것도 출력이 안돼서, 쿼리문을 바꾸었습니다. 대출상품 타입은 acly_ty가 아닌 id_loan 이어서 이거를 바꾸고
대출삼풍 종류(가지급 , ## 제외)를 3건 이상 가지고 있는 고객에 대한 조건을 서브쿼리로 작성하였습니다.
group by를 하여 그 고객번호(cust_no)가 가지고 있는 상품(id_loan)을 묶고 한번더 서브 쿼리로 고객번호(cust_no)를 묶어서 조건을 달아 대출상품 3건이상 가지고 있는 고객의 대한 조건쿼리를 작성하여
컬럼값을 뽑아내려 하는데 where in 절에는 count가 안들어가야 쿼리문이 실행이 되더라구요 이 부분을 어찌 수정을 해야 하나요?
aclg_no으로 조인을 하였습니당
SELECT lc.cust_no 고객번호 ,ms.acco_no 계좌번호 ,ms.bal_loan 잔액 ,lc.am_loan_int 이자 ,lc.am_loan_i_dly 연체료 FROM a_savems ms, l_loancalc lc WHERE lc.cust_no IN ( (SELECT cust_no ,count(*) FROM (SELECT cust_no ,id_loan ,count(*) FROM a_savems WHERE NOT id_loan IN ('GJ','##') AND basic_date = '20190331' GROUP BY cust_no, id_loan ) GROUP BY cust_no HAVING count(*) > 2 ) ) and ms.aclg_no = lc.aclg_no and ms.basic_date = '20190331' and ms.basic_date = lc.proc_date ;