2013-12-22 3 views
0

У меня есть таблица в базе данных (SQLite) .Отель таблица имеет два столбца:как отображать «0», когда я использую группу, в SQL запросе

samochod_id samochod_data_dodania  
1   2012-11-13 
2   2012-12-18 
3   2012-12-21 
4   2013-01-03 
5   2013-02-16 
6   2013-02-27 
7   2013-04-03 

Я использую запрос:

select  strftime('%Y',samochod_data_dodania) as year, 
      strftime('%m',samochod_data_dodania) as month,    
      count() ile 
from samochod 
where samochod_data_dodania between '2012-09-11' and '2013-05-26' 
group by year,month 

результат:

year month ile 
2012 11  1 
2012 12  2 
2013 01  1 
2013 02  2 
2013 04  1 

Я хотел бы:

year month ile 
2012 09  0 
2012 10  0 
2012 11  1 
2012 12  2 
2013 01  1 
2013 02  2 
2013 03  0 
2013 04  1 
2013 05  0 

, как это сделать? пожалуйста, помогите :)

ответ

1

Вы хотите переместить условия в агрегации и из пункта where:

select strftime('%Y',samochod_data_dodania) as year, 
     strftime('%m',samochod_data_dodania) as month,    
     sum(case when samochod_data_dodania between '2012-09-11' and '2013-05-26' then 1 else 0 
      end) as ile 
from samochod 
group by year, month; 

Это предполагает, что у вас есть по крайней мере одна запись для каждого месяца. Если нет, то вам нужно левое внешнее соединение:

select year, month, count(*) as ile 
from (select '2012' as year, '09' as month union all 
     select '2012', '10' union all 
     select '2012', '11' union all 
     select '2012', '12' union all 
     select '2013', '01' union all 
     select '2013', '02' union all 
     select '2013', '03' union all 
     select '2013', '04' union all 
     select '2013', '05' 
    ) ym left outer join 
    samochod 
    on ym.year = strftime('%Y', samochod_data_dodania) and 
     ym.month = strftime('%m', samochod_data_dodania) 
group by ym.year, ym.month; 
0

Я не уверен, что в вашем случае, но вы можете проверить ниже метод:

  1. после данных вставки в таблице можно сортировать там колонки ниже пункт.

ORDER BY column1 DESC, column2.

Надеюсь, это поможет.

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