2013-02-20 5 views
1

Привет, у меня есть табличный значок с колонками facility и date (другие столбцы не важны). Я хочу 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 

другой запрос отличается только стоимостью объекта.

EDIT: База данных 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 (объект = 1 ИЛИ объект = 4) в предложение where, чтобы сделать запрос более эффективным. –

+0

Хорошая точка, исправленная – RobJohnson

Смежные вопросы