2017-01-14 4 views
0

나는이 세 개의 열이있는 테이블 : 1. 상점 이름 2. 데이터 유형 (판매, 새 창) 3. 수량선택 합

--------------------------- 
| Stores | Data | Qty | 
--------------------------- 
| HM | Sales | 15 | 
| RD | Sales | 10 | 
| HM | Return | 4 | 
| RD | Return | 2 | 

내가 원하는 여기

-------------------------- 
| Store | Sales | Return | 
-------------------------- 
| HM | 15 | 4 | 
| RD | 10 | 2 | 

을 다음과 같은 수량을 반환, 모든 상점 이름, 판매 수량을 선택하는 것은 내가 무엇을 시도했다입니다 :

SELECT store, 
CASE `data` 
WHEN 'Sales' THEN SUM(qty) 
ELSE NULL 
END as `Sales`, 
CASE `data` 
WHEN 'Return' THEN SUM(qty) 
ELSE NULL 
END as `Return` 
FROM `full_report` 
GROUP BY store 

결과 : 반환 수량에 잘못된 판매 수량과 Null이 표시됩니다.

답변

1

조건부 집계를 사용할 수 있습니다. . . casesum()과 혼합하면

select fr.store, 
     SUM(case when fr.data = 'Sales' then fr.qty else 0 end) as Sales, 
     SUM(case when fr.data = 'Return' then fr.qty else 0 end) as Returns 
from full_report fr 
group by fr.store; 
+0

완벽하게 작동했습니다. 감사합니다. MySQL에서 예약어 인 것처럼'Return'을 넣기 만하면됩니다. – CairoCoder