2010-08-02 16 views
1

Considérez ce qui suitComment faire Pivotant dans Oracle 10g

Exemple d'entrée

SalesBoyName  Product  Amount 
------------  -------  ------ 
Boy1    P1    100 
Boy1    P1    40 
Boy1    P2    100 
Boy2    P1    100 
Boy2    P3    12 

de sortie désiré

SalesBoyName  P1  P2  P3 
------------ ---- ---- ---- 
Boy1   140 100 null 
Boy2   100 null  12 

Le ci-dessous SQL Server 2005 requête fera le travail

SELECT SalesBoyName, [P1] AS P1, [P2] AS P2,[P3] AS P3 
FROM 
(SELECT * FROM tblSales) s 
PIVOT 
(
SUM (Amount) 
FOR Product IN 
([P1], [P2], [P3]) 
) AS pvt  

Je veux effectuer la même chose dans Oracle 10g.

Comment faire?

Cela peut être trivial, mais depuis que je suis très nouveau à Oracle, je cherche de l'aide.

Merci

Répondre

5

Vous pouvez le faire comme ça dans 10G:

select salesboyname, 
     sum (case when product='P1' then amount end) as p1, 
     sum (case when product='P2' then amount end) as p2, 
     sum (case when product='P3' then amount end) as p3 
from tblsales 
group by salesboyname; 

En 11G il y a un mot-clé PIVOT similaire à SQL Server de.