Q&A

  • select문 좀 알려주세요..
고객에 대한 매출과 입금금액의 총합계를 구하려고 합니다.

우선 테이블은 세개가 있습니다.

첫번째는 고객테이블이고,(고객코드,성명,전화번호...)

두번째는 매출테이블(매출번호,고객코드,매출금액)

세번째는 입금테이블입니다.(입금번호,고객코드,입금액) <---- 여기에는 자료가 없을수도

있다.



출력

고객코드,성명,전화번호,총매출금액,총입금금액,총미수금 <--총미수금:총매출금액-총입금금액





groupby를 쓰고

sum(total) as 총매출금액,sum(ibtot) as 총입금금액,(총매출금액 - 총입금금액) as 총미수금



이런식으로 select문을 썼는데... 문제는 입금테이블에 그 해당고객에 대한 자료가 없을경우에는 총입금금액도 안 나오고 또한 총미수금도 계산이 되지 않습니다. 총매출금액이 값이 있더라도 총입금금액값이 null이다보니 이럴경우에는 어떻게 해야 하는지요...

4  COMMENTS
  • Profile
    smake 2000.05.09 19:46
    <참고> 요걸 참조해 보세요...



    SELECT

    A.고객코드 ,

    A.성명 ,

    A.전화번호 ,

    SUM(B.매출금액),

    SUM(C.입금액),

    NVL(SUM(B.매출금액),0) - NVL(SUM(C.입금액),0) => ORACLE

    ISNULL(SUM(B.매출금액),0) - ISNULL(SUM(C.입금액),0)

    => SYBASE,MSSQL

    FROM 고객테이블 A,

    매출테이블 B,

    입금테이블 C

    WHERE A.고객코드 = B.고객코드(+) => ORACLE

    AND A.고객코드 = C.고객코드(+)



    WHERE A.고객코드 *= B.고객코드 => SYBASE, MSSQL

    AND A.고객코드 *= C.고객코드



    GROUP BY

    A.고객코드 ,

    A.성명 ,

    A.전화번호



    ==> 이런경우는 고객만 있으면 매출이 없어도, 입금이 없어도 나옵니다...

    참고로 NULL은 모든계산에서 제외(숫자계산, 문자비교)됩니다...

    조건을 걸어도 비교대상에서는 제외되죠...

    이때는 NVL(ORCLE)이나 ISNULL(SYBASE,MSSQL)을 사용해서 비교를 하죠...

    도움이 되셨으면...합니다...



    Email : smake@unitel.co.kr

  • Profile
    안경옥 2000.05.09 19:04
    blueofsky wrote:

    > 고객에 대한 매출과 입금금액의 총합계를 구하려고 합니다.

    > 우선 테이블은 세개가 있습니다.

    > 첫번째는 고객테이블이고,(고객코드,성명,전화번호...)

    > 두번째는 매출테이블(매출번호,고객코드,매출금액)

    > 세번째는 입금테이블입니다.(입금번호,고객코드,입금액) <---- 여기에는 자료가 없을수도

    > 있다.

    >

    > 출력

    > 고객코드,성명,전화번호,총매출금액,총입금금액,총미수금 <--총미수금:총매출금액-총입금금액

    >

    >

    > groupby를 쓰고

    > sum(total) as 총매출금액,sum(ibtot) as 총입금금액,(총매출금액 - 총입금금액) as 총미수금

    >

    > 이런식으로 select문을 썼는데... 문제는 입금테이블에 그 해당고객에 대한 자료가 없을경우에는 총입금금액도 안 나오고 또한 총미수금도 계산이 되지 않습니다. 총매출금액이 값이 있더라도 총입금금액값이 null이다보니 이럴경우에는 어떻게 해야 하는지요...





    제가 문제를 잘 이해했는지 모르겠는데요...

    where 에서는 고객코드로 조인을 걸어주시고,

    null 값을 체크해서 null 일경우는 '0'을 넣어주어서 계산하면 되지 않나요?



  • Profile
    공성환 2000.05.09 18:51
    blueofsky wrote:

    > 고객에 대한 매출과 입금금액의 총합계를 구하려고 합니다.

    > 우선 테이블은 세개가 있습니다.

    > 첫번째는 고객테이블이고,(고객코드,성명,전화번호...)

    > 두번째는 매출테이블(매출번호,고객코드,매출금액)

    > 세번째는 입금테이블입니다.(입금번호,고객코드,입금액) <---- 여기에는 자료가 없을수도

    > 있다.

    >

    > 출력

    > 고객코드,성명,전화번호,총매출금액,총입금금액,총미수금 <--총미수금:총매출금액-총입금금액

    >

    >

    > groupby를 쓰고

    > sum(total) as 총매출금액,sum(ibtot) as 총입금금액,(총매출금액 - 총입금금액) as 총미수금

    >

    > 이런식으로 select문을 썼는데... 문제는 입금테이블에 그 해당고객에 대한 자료가 없을경우에는 총입금금액도 안 나오고 또한 총미수금도 계산이 되지 않습니다. 총매출금액이 값이 있더라도 총입금금액값이 null이다보니 이럴경우에는 어떻게 해야 하는지요...



    아우터 조인을 이용해보세요...

    쓰는 방법은 db마다 다르지만...

  • Profile
    blueofsky 2000.05.10 05:51
    저는 db를 Microsoft access 97를 사용합니다. 이럴경우에는 안되는 것 같던데...



    isnull을 이용해서 해봤습니다. 쿼리식의 함수와 함께 사용된 인수 개수가 잘못되었습니다라는 에러메세지가 나타납니다.