1

Temat: Zliczanie rekordów w kolumnie w zależności od daty.

Witam, kolejny problem:
Mam tabelę :

 id |    data
----+------------
 1  | 01-03-2012
 2  | 12-03-2012
 3  | 15-03-2011
 4  | 26-03-2012
 5  | 03-03-2011

Jak powinna wyglądać kwerenda, która w wyniku dałaby:

 Pozycje 2011 | Pozycje 2012
--------------+--------------
 2            | 3

2

Odp: Zliczanie rekordów w kolumnie w zależności od daty.

są dwie metody (obie obarczone pewną komplikacją, skrypt sql musi być generowany po stronie aplikacji klienckiej)

Select * From crosstab ( 'select ''ilość rekordów''::text,extract (year from data) as opis,count(id) as ilosc from tabela group by extract (year from data)','select * from generate_series ((select min(extract (year from data))::bigint from tabela),(select max(extract (year from data))::bigint from tabela))') as d ( a text,"2011" int,"2012" int);

select
count(case extract (year from data) when 2011 then id else null end) as ilosc_2011
,count(case extract (year from data) when 2012 then id else null end) as ilosc_2012
from tabela;