FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[1846] Re:Group by 가 제대로 안먹어요
아폴론 [] 2231 읽음    2006-03-08 13:48
Jonathan 님이 쓰신 글 :
: Table 이름이 NT이고
: BB CC DD  <- 필드명
: 1    1    10   <- 레코드 데이타
: 1    2    20
: 1    3    30
: 2    1    40
: 2    2    50
: 2    3    60
: 3    1    70
:
: 위에 값을 아래와 같이 하면
:  select iif(cc = 1,dd,0), iif(cc=2,dd,0),iif(cc=3,dd,0) from nt group by bb,cc,dd
: 10   0    0
:  0   20   0
:  0    0   30
: 40   0    0
:  0   50   0
:  0    0   60
: 70   0    0
: 이렇게나옵니다.
: 저는  Group By 로 묶어서
: 10 20 30
: 40 50 60
: 70  0  0
: 이렇게 나오게 하려고 하는데 잘 안됩니다. Group by bb 만해주면 될것 같지만
:
: can't format message 13:896 -- message file C:\Program Files\HK-Software\IBExpert\firebird.msg not found.
: Dynamic SQL Error.
: SQL error code = -104.
: Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
:
: 이런 에러 가 나타납니다. 해결 방법좀 알려주세요 Firebird의 한계인가요?

select bb,
sum(case when cc = '1' then dd else 0 end) "값1" ,
sum(case when cc = '2' then dd else 0 end) "값2" ,
sum(case when cc = '3' then dd else 0 end) "값3"
from nt
group by bb

추신) FireBird 1.5 보다는 2.0이 훨신 유리합니다.
2.0에서는 다음과 같이 해도 됩니다.
select bb,sum("값1") "값1",sum("값2") "값2",sum("값3") "값3"
from
(
select bb,
   case when cc = '1' then sum(dd) end  "값1" ,
   case when cc = '2' then sum(dd) end "값2" ,
   case when cc = '3' then sum(dd) end "값3"
from nt
group by bb,cc
)

+ -

관련 글 리스트
1844 Group by 가 제대로 안먹어요 Jonathan 1816 2006/03/07
1846     Re:Group by 가 제대로 안먹어요 아폴론 2231 2006/03/08
1848         Re:Re:Group by 가 제대로 안먹어요 Jonathan 1399 2006/03/08
1849             Re:Re:Re:Group by 가 제대로 안먹어요 아폴론 1615 2006/03/08
1850                 감사합니다. '냉무' Jonathan 1535 2006/03/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.