2014-04-14 2 views
0

MySQL 데이터 테이블에 트랜잭션 데이터가 있습니다. 필드 중 하나는 공급 업체의 이름입니다. 그러나 많은 기록에서 공급 업체는 지정되지 않았습니다 (문자 적으로 'UNSPECIFIED'). '모든 쿼리 결과를 2 개의 카테고리로 정렬

ID  Date   Supplier   --- 
1  1 Nov 2013 Green supplier 
2  3 Nov 2013 Red supplier 
3  15 Nov 2013 UNSPECIFIED 
4  2 Dec 2013 UNSPECIFIED 
5  6 Nov 2013 Blue supplier 
6  20 Nov 2013 UNSPECIFIED 

X 10 만

내가 합계 수 등 그룹 SUM을 사용하여 각 달 (IF (DATE_FORMAT (날짜,'%의 B, %의 Y ') =

그래서 데이터처럼 보이는 내가 나누기 단순화 된 버전을 원하지만

   Nov 2013 Dec 2013 
UNSPECIFIED  1  2 
Green supplier  1  0 
Red supplier  1  0 
Blue supplier  0  1  etc 

가 지정되어 있지 않은 (1) 아래로 결과와 다른 (2) 모든 합계 그래서 결과 -. 기타 년 11 2013 ', 1,0) 같은 무언가를 얻을 수모양은 다음과 같습니다 -

   Nov 2013 Dec 2013 
UNSPECIFIED  1  2 
'Not UNSPECIFIED' 2  1  etc 

월간 형식의 합계는 그대로 유지됩니다. 이것은 간단해야한다고 확신하지만 어떻게 생각할 수는 없습니다. 누구든지 조언 할 수 있습니까?

답변

2

당신은 당신의 쿼리에서 group by에 조건부 논리를 추가 : MySQL의에서

select (case when supplier = 'UNSPECIFIED' then 'UNSPECIFIED' else 'SPECIFIED' end), 
     . . . 
from . . . 
group by (case when supplier = 'UNSPECIFIED' then 'UNSPECIFIED' else 'SPECIFIED' end); 

을, 당신은 실제로 group by의 논리를 반복 할 필요가 없습니다 :

group by 1 
+0

감사합니다. 나는 그룹화에 사건을 연결하는 것에 대해 몰랐다. 훌륭하게 작동합니다. – highfidelity

0

당신은 사용할 수 있습니다 case 명세서를

case when supplier='UNSPECIFIED' then 'UNSPECIFIED' else 'Not UNSPECIFIED' end column_name 
+0

도움 주셔서 감사합니다. 위의 대답을 고든이 사용했습니다. – highfidelity

관련 문제