2012-10-19 2 views
1

J'ai les colonnes ID et NUMBER dans ma table.PIVOT, comment convertir d'autres lignes que celles spécifiées en colonne?

ID peut être quelque chose de 1 à 200, et peut être quelque chose NUMBER de 1 à 100000.

Le code ci-dessous fonctionne parfaitement.

SELECT * 
FROM PIVOT_DATA 
PIVOT (
    SUM(NUMBER) 
    FOR (ID) 
    IN (1 , 2) 
    ); 

Mais, je veux sélectionner 3 colonnes (1, 2, autres), comment puis-je sélectionner tous les autres ID autre que 1 ou 2? Ca devrait être quelque chose comme le code ci-dessous, mais quoi?

SELECT * 
FROM PIVOT_DATA 
PIVOT (
    SUM(NUMBER) 
    FOR (ID) 
    IN (1 , 2, OTHERS) 
    ); 

Répondre

2

Utilisez l'instruction CASE pour convertir votre colonne dans les trois valeurs que vous souhaitez faire pivoter.

CASE ID 
WHEN 1 THEN '1' 
WHEN 2 THEN '2' 
ELSE 'OTHERS' 
END 

Puis pivotez sur cette valeur au lieu de ID.

2
WITH TAB AS (SELECT CASE ID 
         WHEN 1 THEN '1' 
         WHEN 2 THEN '2' 
         ELSE 'OTHERS' 
         END 
         ID, num 
       FROM PIVOT_DATA) 
SELECT * 
    FROM TAB 
    PIVOT (SUM (NUM) 
      FOR (ID) 
        IN (1 , 2 , 'OTHERS')); 
Questions connexes