Je ne connais pas la solution
sparky/ = 7 Mars, 2006 - 12:21
Je ne connais pas la solution mais en expliquant Ă quoi sert TRANSFORM et PIVOT p-e que qq'un aura une solution efficace
TRANSFORM et PIVOT permet de présenter des résultats de fonction d'aggrégat en colonne plutôt qu'en ligne.
Exemple:
Dans une table on a
c1 | c2 | c3
Dany salaire 2
Dany Depense 3
Dany Depense 5
Dany Depense 8
Dany salaire 20
si on fait
transform min (c3) as valeur
select c1 from t
group by c1
pivot c2;
on aura comme résultat
C1 | Salaire | Depense
Dany | 2 | 3
A part un morceau de code en pl/pgsql qui retourne des tuples et faire select * from ma_fonction, je n'ai pas d'idée
[ Vous devez
vous connecter pour poster des commentaires ]
une solution pour commence c'est deja ca
pollok/ = 5 Juillet, 2007 - 14:57
pour une solution de pivot simple
select c1,
sum(case when c2='salaire' then c3 else 0 end) as Salaire,
sum (case when c2='Depense' then c3 else 0 end) as Depense,
(sum(case when c2='salaire' then c3 else 0 end) - sum (case when c2='Depense' then c3 else 0 end)) as total
from(
select c1,c2,c3 from t)as test
group by c1
on aura comme résultat
c1 | Salaire | Depense | Total
Dany | 22 | 16 | 6
sinon pour ton probleme
select c1,
min(case when c2='salaire' then (select c3 where (c2='salaire')) else (select c3 where (c2='salaire')) end) as salaire,
min(case when c2='depense' then (select c3 where (c2='depense')) else (select c3 where (c2='depense')) end)as dep,
(sum(case when c2='salaire' then c3 else 0 end) - sum (case when c2='depense' then c3 else 0 end)) as total
from(
select c1,c2,c3 from t)as test
group by c1
et pas besoin de pl/pgsql
Librement Pollok
[ Vous devez
vous connecter pour poster des commentaires ]