Q&A

  • 쿼리에 자신 있으신 분 가르켜 주세요
테이블
scode  char(4)  거래처코드
bcode  char(4)  상품코드
chk1  char(1)   주문1 체크
su1   int
chk2  char(1)   주문2 체크
su2   int
chk3  char(1)   주문3 체크
su3   int
chk4  char(1)   주문4 체크
su4   int
상품 납품시에 주문체크에 'T' 표시
예) 1차 납품시 주문1 'T'가 입력

조건 : 거래처별로 집계 group by scode 사용
select a_scode, sum(su1) + sum(su2) + sum(su3) +
sum(su4) as Tot  (총주문집계), 총공급(주문체크가 'T' 인것만 집계), 총미공급(주문체크가 'F' 인것만 집계)
from TableName  group by scode

sql server 2000 server 사용하고 있습니다. 아시는 분 부탁 좀 드리 겠습니다.



3  COMMENTS
  • Profile
    박병영 2002.04.12 03:30
    안녕하세요 ^^
    질문사항이 주문체그가 'T'인것의 합과 'F'인것의 합을 구하고 싶은거죠?

    SELECT A.SCODE
          ,A.TOT  (총주문집계)
          ,B.TOT_T(주문체크T인집계)
          ,C.TOT_T(주문체크F인집계)      
    FROM   (SELECT SCODE
                  ,SUM(S1) + SUM(S2) + SUM(S3) + SUM(S4) AS TOT
            FROM   TABLENAME
            GROUP  BY SCODE) A
          ,(SELECT SCODE
                  ,SUM(S1) + SUM(S2) + SUM(S3) + SUM(S4) AS TOT_T
            FROM   TABLENAME
                  WHERE  주문1체크 = 'T'
              AND  주문2체크 = 'T'
              AND  주문2체크 = 'T'
              AND  주문2체크 = 'T'                    
            GROUP  BY SCODE) B
          ,(SELECT SCODE
                  ,SUM(S1) + SUM(S2) + SUM(S3) + SUM(S4) AS TOT_F
            FROM   TABLENAME
                  WHERE  주문1체크 = 'F'
              AND  주문2체크 = 'F'
              AND  주문2체크 = 'F'
              AND  주문2체크 = 'F'                    
            GROUP  BY SCODE) C
    WHERE  A.SCODE(*) = B.SCODE
      AND  A.SCODE(*) = C.SCODE        

    MS_SQL은 책만 조금보다 말아서 함수를 잘 모르겠네요 ^^
    주문체크 T,F 합계가 NULL인 경우는 값을 0으로 바꾸시면 되겠죠
    그래서 OUT JOIN으로 했습니다.

    답이 될련지 모르겠네요
  • Profile
    박병영 2002.04.12 03:31
  • Profile
    최은석 2002.04.12 03:29
    SELECT SCODE, SUM(SU1+SU2+SU3+SU4) AS TOT,
           SUM(DECODE(CHK1,'T',SU1,'F',0)+DECODE(CHK2,'T',SU2,'F',0)+
           DECODE(CHK3,'T',SU3,'F',0)+DECODE(CHK4,'T',SU4,'F',0)),      
           SUM(DECODE(CHK1,'T',0,'F',SU1)+DECODE(CHK2,'T',0,'F',SU2)+
           DECODE(CHK3,'T',0,'F',SU3)+DECODE(CHK4,'T',0,'F',SU4))
    FROM TABLENAME
    GROUP BY SCODE      

    이렇게 하시면 될듯....