Q&A

  • 집계를 할려구 합니다. ..
안녕하세요.
집계를 할려구 하는데 제가 알고 있는 쿼리로 할려구 하니 시간이 너무 걸리내요..

테이불 Tmp (a, b, c, d)가 있다면
  a b c d
  1 T 0 1
  1 T 0 1
  1 B 0 1
  1 A 0 1
  1 C 0 1
  2 A  1 1
이있습니다..여기서 제가 알고싶은건
쿼리결과
  A Cnt  A1 A2 A3 A4 A5
   1   5   1   1    1   0   2
   2   1   1   0    0   0   0
이런식으로 a필드내에 각수량을 알고싶습니다.
  Select a, Count(a) As Cnt,
     Count(Select Count(*) From Tmp Where  (b = 'A') And a.a = a) As A1,
     Count(Select Count(*) From Tmp Where  (b = 'B') And a.a = a) As A2,
     Count(Select Count(*) From Tmp Where  (b = 'C') And a.a = a) As A3,
     Count(Select Count(*) From Tmp Where  (b = 'D') And a.a = a) As A4,
     Count(Select Count(*) From Tmp Where  (b = 'T') And a.a = a) As A5
  From Tmp A Group By a
이런식으로 하면 자료가 별루 없으면 상관이 없는데 자료가 많으면 시간이 너무 걸리내요..고수님 좋은 방법이 없을까요..
디비는 Access쓰고 있습니다..
4  COMMENTS
  • Profile
    배창석 2003.05.16 23:28
    Access의 IIF가 오라클의 Decode와 같은 기능을 한다고 하길래 함 만들어봤어는데... 되는지 확인은 못해밨어요...

    Select a, Count(a) As Cnt,
           sum(IIF(b, 'A', 1, 0)) as A1,
           sum(IIF(b, 'B', 1, 0)) as A2,
           sum(IIF(b, 'C', 1, 0)) as A3,
           sum(IIF(b, 'D', 1, 0)) as A4,
           sum(IIF(b, 'E', 1, 0)) as A5
      From Tmp A Group By a

  • Profile
    최병철 2003.05.16 02:05
    Access에서
    Union을 사용하지는 않았지만
    Union을 이용해 보세요.

  • Profile
    홍길동 2003.05.16 02:36
    어떻게 하는거죠..간단한 예제라두 부탁합니다..

  • Profile
    최병철 2003.05.16 18:17
    님이 무엇을 요구하는지는 모르겠지만
    제가 이용하는 예제를 하나 말씀 드리겠읍니다.
    목적은 특정 거래처별에 월별로 집계 부분

    Select T.Sale_Name,
              Sum(T.Month01)     As  Month01,
              Sum(T.Month02)     As  Month02,
              Sum(T.Month03)     As  Month03,
              Sum(T.Month04)     As  Month04,
              Sum(T.Month05)     As  Month05,
              Sum(T.Month06)     As  Month06,
              .......

    From   (
                  Select  Sale_Name,
                             Amt        As  Month01,
                             0            As  Month02,
                             0            As  Month03,
                             0            As  Month04,
                             0            As  Month05,
                             0            As  Month06,
                             ........
                  From   Sale_Table
                  Where  Year_Char  =  '2003'   And
                             Month_Char = '01'
                  Union   All

                  Select  Sale_Name,
                             0            As  Month01,
                             Amt        As  Month02,
                             0            As  Month03,
                             0            As  Month04,
                             0            As  Month05,
                             0            As  Month06,
                             ........
                  From   Sale_Table
                  Where  Year_Char  =  '2003'   And
                             Month_Char = '02'
                  Union   All

                  Select  Sale_Name,
                             0            As  Month01,
                             0            As  Month02,
                             Amt        As  Month03,
                             0            As  Month04,
                             0            As  Month05,
                             0            As  Month06,
                             ........
                  From   Sale_Table
                  Where  Year_Char  =  '2003'   And
                             Month_Char = '03'
                  Union   All
                
                 ................

              ) T
    Group  By  T.Sale_Name

    어떻게 원하는 답이 되었는지 모르겠군요.