2010-11-03 5 views
2

J'ai une table commelignes à colonnes

cases open/close count 
----------------------------- 
A  open   10  
A  close   15 
B  open   6 
B  close   4 

je dois obtenir une table de résultat qui est comme

cases total  open  close 
--------------------------------- 
A  25  10  15 
B  10  6  4 

Toutes les idées à ce sujet?

+0

oublié de mentionner ... il y a d'autres colonnes à la table source qui doivent être portées à la table finale telle qu'elle est ... alors ... je ne pense pas que le pivot fonctionnerait ... vos suggestions sont grandement appréciées – mahen

+0

Je décrirais cela plus comme agrégat/groupement pas vraiment des lignes aux colonnes. Vous pouvez être en mesure d'utiliser un select dans la requête pour le faire – Roadie57

Répondre

0

Vous pouvez utiliser le pivot sur les cas de colonne et la somme totale du nombre.

+0

PIVOT a été intégré dans 11g, l'OP spécifie 10g dans les balises – APC

4

Ceci est communément appelé requête pivot, convertissant une ligne en données en colonne. Utilisation:

SELECT t.cases, 
     SUM(t.count) AS total, 
     SUM(CASE WHEN t.open_close = 'open' THEN t.count ELSE 0 END) AS open, 
     SUM(CASE WHEN t.open_close = 'close' THEN t.count ELSE 0 END) AS close 
    FROM YOUR_TABLE t 
GROUP BY t.cases 

Oracle n'a pas ajouté la syntaxe ANSI PIVOT (et UNPIVOT) jusqu'à 11g.