2013-02-20 2 views
1

안녕하세요 저는 facilitydate (다른 열은 중요하지 않습니다) 열이있는 테이블 배지 있습니다. 내가 select count(*) 원하는 다음과 같아야한다 :같은 테이블에 가입하십시오

DATE  | FACILITY 4 COUNT | FACILITY 1 COUNT 
12/12/2012 | 234    | 647 

내가 facility 1, 4하지만 어떻게 하나 개의 쿼리에 참여하는 두 개의 별도의 쿼리를 썼다;

SELECT 
    date, 
    COUNT(*) 
    FROM  badge 
    WHERE  facility = 3 
    AND  xtype = 19 
    AND  date BETWEEN 'some_date' AND 'some_date' 
    GROUP BY date 

다른 쿼리는 시설 값만 다릅니다.

편집 : informix 데이터베이스입니다.

답변

2

이 시도 줄

SELECT date, 
     SUM(CASE WHEN facility = 3 THEN 1 ELSE 0 END) `Facility 3 Count`, 
     SUM(CASE WHEN facility = 1 THEN 1 ELSE 0 END) `Facility 1 Count` 
FROM  badge 
WHERE  xtype = 19 AND  
      date BETWEEN 'some_date' AND 'some_date' 
GROUP  BY date 
이 작동
+0

, 감사합니다! – insict

+0

당신은 환영합니다': D' –

3
SELECT date, 
     SUM(case when facility = 1 then 1 else 0 end) "FACILITY 1 COUNT", 
     SUM(case when facility = 4 then 1 else 0 end) "FACILITY 4 COUNT" 
FROM  badge 
WHERE  (facility = 1 OR facility = 4) 
AND  xtype = 19 
AND  date BETWEEN 'some_date' AND 'some_date' 
GROUP BY date 
+1

쿼리를보다 효율적으로 만들기 위해 AND (facility = 1 OR facility = 4)를 where 절에 추가했습니다. –

+0

좋은 지적 – RobJohnson

관련 문제