안뿌꾸
130
2019-07-12 11:25:42
6
316

(초보DB) select문과 서브쿼리



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 ms.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
			)
)
;

검색조차 되지 않네요 ,, 인터넷 보고 간간히 소스쿼리 작성하긴 했는데

서브쿼리는 대출상품 종류(가지급과 ## 제외)하고 3건 이상 가지고 있는 고객 조회 하는 것입니다.

아래와 같은 표가 나오길 기대했는데 어찌 쿼리를 바꿔야 할까염?

고객번호계좌번호잔액이자연체료
1000063618128-01-13-0263881708377234141113058927952434
1000063618128-01-44-000451829673000
1000063618128-01-44-0004519458880000
1000063618128-01-44-00236901397500
1000063618128-01-73-00000193164320026541848480
1000063618128-01-76-049123330000000045610679647608
1000063618128-90-44-000012412264000


0
0
  • 답변 6

  • 바나나킥
    134
    2019-07-12 11:36:56

    IN 뒤에 서브쿼리가 제대로 동작한다는 전제하에

    ms.cust_no = lc.cust_no 조건도 있어야 ms, lc 테이블이 조인되는걸로 공부한것 같아요.


    0
  • 안뿌꾸
    130
    2019-07-12 11:46:10


    ELECT 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 ms.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

    두 테이블 키 값이 aclg_no 라서 구문 넣고 돌려봤는데 값이 너무 많다는(?)  오류구문 뜨고 커서거

    서브쿼리인 cust_no쪽으로 옴겨지네요


    0
  • 12341235
    1k
    2019-07-12 12:07:14

    저도 초보라 확실하진않은데 where절에

    서브쿼리에 count있어서  그러지않을까요?

    cust_no의 조건을 where로 구하는데 count가있어서 인거같아요

    0
  • C#린이
    852
    2019-07-12 12:08:19

    cust_no = '1000063618' 에 대한

    a_savems, l_loancalc 테이블 데이터를 보여주셔야

    질문에 대해 정확하게 답변을 드릴 수 있을 것 같네요.

    0
  • C#린이
    852
    2019-07-12 14:08:51

    안뿌꾸 //

    제 말 뜻을 이해 못하셨네요.

    아래 쿼리문에 대한 결과(샘플자료)를 보여주세요.

    그래야 정확한 쿼리문을 작성할 수 있으니까요.

    타 사이트에도 동일 질문으로 올리시고 거기 고수님께서 동일한 답변 주시네요.


    SELECT * FROM a_savems WHERE CUST_NO = '1000063618';
    SELECT * FROM l_loancalc WHERE CUST_NO = '1000063618';
    0
  • 안뿌꾸
    130
    2019-07-12 14:24:20

    다들 도와주셔서 감사합니다.

    디오니님 말처럼 count(*)만 삭제 하면 된거였는데

    왜 그렇게 되는지도 모르겠네요, 일단 저가 쓰는 구문부터 이해가 잘 되지 않으므로 이것저것

    넣은게 어거지로 걸린것 뿐이네요 운좋게

    갑자기 난이도가 높아져서 어려움만 느끼는데 천천히 다시 기초부터 쌓아야겠습니다.


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.