Q&A

  • group by 좀 도와주세요
나누어진 주소를 합하여 group by를 하면 에러가 납니다.

사용 DB : 파라독스

테이블 Yeongsu --> Y_NUM,C_NUM,C_NUM1,EA,OUTPUT
           Custom   -->C_NUM,TEL,addr_dong, addr_bungi, addr_hosu
           Familly    -->C_NUM,C_NUM1,C_NAME
작업할 내용
   --> 출고가 완료되지 않은 영수증만 추출하여 고객별로 집계하려고 함

문제점 (addr_dong+ addr_bungi+ addr_hosu) as TT 에서 에러

select   tel, c_name, (addr_dong+ addr_bungi+ addr_hosu) as TT,
            sum(ea), sum(output), sum(ea-output) as jan
from     yeongsu, custom, familly
where  yeongsu.c_num = custom.c_num
           and  yeongsu.c_num = familly.c_num
           and  yeongsu.c_num1 = familly.c_num1
group by  tel, c_name,TT
order by  c_name, tel

하면 invalid field name  TT 하는 error 나는데
왜그렇죠?

에러없이 group by 하는 방법은 없나요?

2  COMMENTS
  • Profile
    2003.01.27 09:29
    당연히 에러가 납니다.
    ' addr_dong+ addr_bungi+ addr_hosu ' 와 TT 의 차이지요.
    group by 이하의 절에는 from 이하의 정의된 테이블 필드가 정확하게 명시되어야 하죠.
    근데 TT 는 select 된 특정필드의 가명이라는 거죠.

    결론은 아래와 같이 하면 됩니다.

    select   tel, c_name, (addr_dong+ addr_bungi+ addr_hosu) as TT,
                sum(ea), sum(output), sum(ea-output) as jan
    from     yeongsu, custom, familly
    where  yeongsu.c_num = custom.c_num
               and  yeongsu.c_num = familly.c_num
               and  yeongsu.c_num1 = familly.c_num1
    group by  tel, c_name,(addr_dong+ addr_bungi+ addr_hosu)
    order by  c_name, tel

    참고로  oracle DB 람 위의 문장이 문제 없을듯 싶구여...
    혹여나 paradox 람 ... group by 절이하에 조작된 값은 인식이 안되던데요...







    _____________________
    (addr_dong+ addr_bungi+ addr_hosu) as TT




  • Profile
    서은구 2003.01.27 09:17
    사용하시는 데이터베이스가 무엇인지 올려주시는게
    좋을거 같은데요..^^
    메뉴얼에서 직접 찾으시거나요.. ^^

    제가 알기로는 문자열을 합치는거는 기본 SQL에 없는 기능이구
    각 데이터베이스마다 틀린걸로 알고 있습니다.

    오라클 같은 경우는 '||"를 사용하는 걸로 알고 있구..
    다른 데이터베이스는 뭔가 다른게 잇겠죠..

    그럼 도움이 되었기를 빌며... ^^