PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Transform et Pivot

| Transform et Pivot

Par jduv le 07/03/2006 - 11:43

bonjour Ă  tous,
Je viens de récupérer des tables Access et des requetes à adapter.
Probléme, elles utilisent les mots clés TRANFORM et PIVOT. Ce qui fonctionne visiblement bien sous Access.
Mon probléme est donc de savoir s'il existe une équivalence en SQL et pour Postgre évidemment.
Quelqu'un a t'il déja vu cela.
Merci d'avance pour toutes pistes ou début de piste

Expl :

TRANSFORM Min(cult.[Rdt]) AS [valeur]
SELECT cult.CodeEch
FROM cult
GROUP BY cult.CodeEch
PIVOT cult.CodeCult;

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

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


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


© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.