2013-07-11 2 views
0

나는이 내가 "유형별을 MyTable 그룹에서 양 같은 유형 선택, 합계 (금액)"이 쿼리를 실행할 때그룹화 후 단일 결과를 얻는 방법?

TYPE  AMOUNT 

purc 100 
sale 120 
sale 80 
purc 150 
sale 50 
sale 70 
sale 120 
purc 60 

내가 얻을 수있는 2 결과 같은 테이블

TYPE  AMOUNT 
purc 310 
sale 440 
처럼 설정되어

하지만 난 단일 쿼리하는 것이 무엇에만

SALE PURC PROFIT 
440 310 130 

등의 판매 및 purc에 대한 하나 개의 쿼리에서 하나의 결과를 원하는?

+0

사용 '절 –

+0

내가 해결책을 발견 WHERE'. 이 쿼리는 내 기대를 위해 작동합니다 t1.SALE, t2.PURC를 (select3 (AMOUNT)을 "TYPE"= '판매'인 test3에서 SALE으로 선택)을 t1, (선택 합계 (금액)을 PURC from test3 where "TYPE"= 'purc') t2 – Manoj

+0

만약 당신이 많은 행을 가지고 있다면 괜찮습니다. 내 쿼리가 더 빠를 것이라고 생각합니다. –

답변

5

이 시도 :

SELECT 
    SUM(IF(`TYPE` = 'purc', `AMOUNT`, 0)) as `PURC`, 
    SUM(IF(`TYPE` = 'sale', `AMOUNT`, 0)) as `SALE` 
FROM `MyTable` 

이 수행해야 소위를 테이블에을 선회.

IF 대신 CASE 사용 :

SELECT 
    SUM(CASE `TYPE` WHEN 'purc' THEN `AMOUNT` ELSE 0 END) as `PURC`, 
    SUM(CASE `TYPE` WHEN 'sale' THEN `AMOUNT` ELSE 0 END) as `SALE` 
FROM `MyTable` 
+0

이 쿼리는 Java Derby에서 작동하지 않습니다. – Manoj

+0

SQL이 올바르지 않을 수 있습니다. 어떤 오류가 발생합니까? –

+0

오류 코드 -1, SQL 상태 42Y03 : 'IF'가 함수 또는 프로 시저로 인식되지 않습니다. derby CASE가 IF – Manoj

관련 문제