2017-04-09 2 views
-1

Ich habe eine Tabelle:Ist es möglich, Tabelle mit SQL "zu entmutigen"?

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

und müssen es UNPIVOT und eine Berechnung Ergebnistabelle (multiplizieren "Menge" auf Jahre Daten) gemacht:

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

Ist es möglich? Und wie?

+2

Sie sollten Ihre Fragen im Allgemeinen mit der Datenbank markieren, die Sie verwenden. –

+0

Aktualisiert es nur Add-In für Excel, die SQL für Excel-Tabellen ausführen. – FFire

Antwort

1

Die einfachste Art und Weise verwendet 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; 

Es gibt andere Methoden (einige auf der Datenbank abhängig). Aber für Ihre Daten sollte das in Ordnung sein.

+0

wenn ich Planty Y2XXX Felder habe? – FFire

+0

@FFire. . . Sie können weitere Unterabfragen hinzufügen. Wenn Sie möchten, kann eine Tabelle helfen, die Abfrage zu erstellen. –

Verwandte Themen