Vous n'êtes pas identifié(e).
Pages : 1
Bonjour @ tous.
Je galère un peu à utiliser la fonction crosstab (que je n'arrive pas vraiment à utiliser) sans vraiment savoir s'il s'agit de la solution idéale, je m'explique :
J'ai une table qui contient les champs suivants :
Col1 Col2
Service1 2014-02-10
Service1 2014-02-10
Service1 2013-02-10
Service2 2011-02-10
Service3 2012-02-10
Service3 2013-02-10
Ce que j'aimerais obtenir c'est :
Col1 2011 2012 2013 2014
Service1 0 0 1 2
Service2 1 0 0 0
Service3 0 1 1 0
Pour obtenir ce résultat j'ai tenté un crosstab dont j'ai visiblement du mal à comprendre le comportement en faisant :
SELECT * FROM crosstab (
'SELECT service,COUNT(*) nb,EXTRACT(YEAR FROM date)AS annee FROM device GROUP BY service,EXTRACT(YEAR FROM date) ORDER BY service,EXTRACT(YEAR FROM date)' ,
'SELECT DISTINCT EXTRACT(YEAR FROM date) AS annee FROM device')
as (service varchar,"2010" numeric, "2011" numeric, "2012" numeric, "2013" numeric, "2014" numeric)
Et le résultat de cette requête me donne :
Col1 2011 2012 2013 2014
Service1
Service2
Service3
Merci de votre aide.
Geo-x
Hors ligne
Déplacez le 'COUNT(*)' comme ci-dessous:
SELECT * FROM crosstab (
'SELECT service,EXTRACT(YEAR FROM date)AS annee ,COUNT(*) nb FROM device GROUP BY service,EXTRACT(YEAR FROM date) ORDER BY service,EXTRACT(YEAR FROM date)' ,
'SELECT DISTINCT EXTRACT(YEAR FROM date) AS annee FROM device')
as (service varchar, "2011" numeric, "2012" numeric, "2013" numeric, "2014" numeric)
Hors ligne
Pages : 1