2017-04-09 1 views
-1

J'ai une table:Est-il possible de table "unpivot" avec SQL?

id amount Y2016 Y2017 Y2018 
1 100    1  1 
2 200   
3 300  2  
4 400  2  3 
5 500      1 

et doivent UNPIVOT et fait un calcul table Résultat (multipliez-vous "quantité" sur des années de données):

id year amount 
1 Y2017 100 
1 Y2018 100 
3 Y2016 600 
4 Y2016 800 
4 Y2017 1200 
5 Y2018 500 

Est-il possible? Et comment?

+2

Vous devriez étiqueter vos questions - en général - avec la base de données que vous utilisez. –

+0

Actuellement, il suffit de compléter pour Excel qui fait exécuter SQL pour les tables Excel. – FFire

Répondre

1

La façon la plus simple utilise union all

select id, 'Y2016' as year, Y2016 * amount as amount 
from t 
where Y2016 is not null 
union all 
select id, 'Y2017' as year, Y2017 * amount as amount 
from t 
where Y2017 is not null 
union all 
select id, 'Y2018' as year, Y2018 * amount as amount 
from t 
where Y2018 is not null; 

Il existe d'autres méthodes (certaines en fonction de la base de données). Mais pour vos données, cela devrait aller.

+0

si j'ai des champs Y2XXX planty? – FFire

+0

@FFire. . . Vous pouvez continuer à ajouter des sous-requêtes - une feuille de calcul peut vous aider à construire la requête, si vous le souhaitez. –