Q&A

  • [질문]SQL 문에서요 ISNULL 하면 0으로 나와야 하는데 1이 나오네요(안에 소스 있음)
개발 은 델파이6으로 하고 있고
db는 싸이베이스 6.03 인가를 쓰고 있습니다
<!--CodeS-->

SELECT T.*, T.SU-ISNULL(M.MSU,0) MISU FROM (
       SELECT A.TAXIL, A.TAXNO, A.TGONGKUM, A.TVATKUM, A.TTAXKUM, B.POOM, 1 SU, C.*
         FROM TAXH A, CHCO C,
            ( SELECT TAXIL, TAXNO, POOM FROM TAXT
               WHERE TAXIL >= '20090501'
                 AND TAXIL <= '20090531'
                 AND TAXSEQ = '01' ) B
        WHERE A.TAXIL = B.TAXIL
          AND A.TAXNO = B.TAXNO
          AND A.MCHCODE = C.CHCODE
          AND A.TAXIL >= '20090501'
          AND A.TAXIL <= '20090531'
      ) T LEFT OUTER JOIN
     ( SELECT TAXIL, TAXNO, 1 MSU FROM ETAXT
       GROUP BY TAXIL, TAXNO
     ) M ON T.TAXIL = M.TAXIL AND T.TAXNO = M.TAXNO
WHERE T.SU-ISNULL(M.MSU,0) > 0
ORDER BY T.TAXIL, T.TAXNO

<!--CodeE-->

지금 ETAXT 테이블에는 데이터가 하나도 없습니다.
이럴경우 LEFT OUTER JOIN 이기 때문에 모든 데이터가 나와야 하거든요..
근데.. 이상하게 시리
ISNULL(M.MSU,0) 이게 1이 되네요.. 허참..
분명 0으로 하라고 지정했는데..

제가 뭘 잘못한걸까요?

ETAXT 테이블에 데이터가 있으면 해당 데이터는 빼버리고 나머지만 나오게 하라는 건데...
MSSQL 2005에서는 문제 없이 실행 되는 쿼리인데.. 싸이베이스로 적용하니 않되네요

MSSQL로 작업한 프로그램을 싸이베이스로 변경중인데.. 않되니.. 답답합니다..

다른 방법이 있을까요?
1  COMMENTS
  • Profile
    박준영 2010.05.13 18:31
    요즘 질문 해 놓고는 해결을 보고.. 답변을 달게 되는 군요..
    음.. 갑자기 떠올라서리.. ^^



    SELECT A.TAXIL, A.TAXNO, A.TGONGKUM, A.TVATKUM, A.TTAXKUM, B.POOM, D.JUNPIL, C.CHCODE, C.CHNAME, C.SAUPNO,
    C.TAXNAME, C.BOSSNAME, C.ADDRESS, C.KIND, C.TYPE, C.TAXD, C.TAXTEL, C.TAXHP, C.TAXEMAIL
    FROM TAXH A, CHCO C, ETAXT D,
    ( SELECT TAXIL, TAXNO, POOM FROM TAXT
    WHERE TAXIL >= '20090501'
    AND TAXIL <= '20090531'
    AND TAXSEQ = '01' ) B
    WHERE A.TAXIL = B.TAXIL
    AND A.TAXNO = B.TAXNO
    AND A.TAXIL *= D.TAXIL
    AND A.TAXNO *= D.TAXNO
    AND A.MCHCODE = C.CHCODE
    AND A.TAXIL >= '20090501'
    AND A.TAXIL <= '20090531'
    GROUP BY A.TAXIL, A.TAXNO, A.TGONGKUM, A.TVATKUM, A.TTAXKUM, B.POOM, D.JUNPIL, C.CHCODE, C.CHNAME, C.SAUPNO,
    C.TAXNAME, C.BOSSNAME, C.ADDRESS, C.KIND, C.TYPE, C.TAXD, C.TAXTEL, C.TAXHP, C.TAXEMAIL
    HAVING D.JUNPIL IS NULL
    ORDER BY A.TAXIL, A.TAXNO



    역시 좀 무식한 방법이지만.. 효과는 있네요//
    데이터가 많으면 문제가 될꺼 같긴 한데.. 쩝..

    다른 방법 아시면 어서 답변을.. 쩝