Q&A

  • Sql group by 문제입니다. 알려주세요
A 테이블 입니다.
A  B  C  D   E   F   H
1  2   A  가  4   9    3
1  2   A  가  4   8
1  2   A  가  4   7
1  2   A  가  4   6    3
1  2   A  나  5  14
1  2   A  나  5  13
1  2   A  다  4   6    3
1  2   A  다  5  14
1  2   A  다  5  13        

저는 H필드가 3인것들 찾아서.. Group by 나타낼려고 하는데..
H=3 있는것만 값이 나타나요..

제가 한 SQL은

Select A,B,C,D,Count(*) From A Where H='3' Group by A,B,C,D
이렇게  하였더니.. 결과가 아래처럼 나오거든요..
A B C D   건수
1  2 A 가   2
1  2 A 다   1


제가 원하는결과는 아래처럼입니다.

결과 ************
A B C D   건수
1  2 A 가   2
1  2 A 나   0
1  2 A 다   1

위처럼 나오게 하고 싶은데요. 왜 안되죠...

알려주세요

2  COMMENTS
  • Profile
    하얀까마귀 2003.06.20 04:16
    그건 그룹의 문제는 아닌듯 하네요...

    일단 where 구문을 빼버리시면 건수는 달라도 값은 같게 나오겟죠?

    여기서 카운트를 하지 마시고 서브쿼리로 몇건인지 불러와야 할것 같네요.

    group by를 사용하시면 내부적으로 쿼리가 두번 돌아가게 됩니다.

    where 구문의 조건에 맞는걸 찾아서 템프테이블에 저장한다음에
    해당 결과를 가지고 그룹으로 묶는거죠. 따라서 님이 하신건
    다빠지고 3건만 가지고 그룹을 만드신게 되구요. 따라서 2건만 보이겠죠.

    그럼..

  • Profile
    파파앤민주 2003.06.24 09:18
    만약에 오라클일 경우에는 이렇게 하시면 됩니다.
    Select A,B,C,D,SUM(DECODE(H,'3',1,0)) From A Group by A,B,C,D

    다른 디비일 경우에는 어떻게 할런지...
    오라클의 DECODE란?
    DECODE(H,'3',True,False) H가 3일경우에는 True를 발생하구 아닐경우에는 False를 발생합니다.