Ich habe eine Anforderung für eine Tabelle wie folgt. Wie Sie sehen können mgt_year
, tot_dflt_mgt
und to_accum_mgt
Spalten. In Jahr Spalte, wo sein der Wert 39,772773 und accum Wert ist 1380,055 .Was ich will, ist, dass, wenn ich (to_accum_mgt - tot_dflt_mgt)
tun mag ich dieses berechnete Ergebnis in vorherigen Zeilen wie in der Abbildung dargestellt. für das Jahr 2015 und so weiter für alle Hinter Jahren - dann ist dieses berechnete Ergebnis heißt 1.340,282227 wird zum Subtrahieren 65,7915 wie (65,7915 1.340,282227) verwendet. Ich habe dies in Excel getan, aber wie dieses Ergebnis in Oracle und SQL Server zu erreichen. Bitte vergib mir meine schlechte Englisch und Noob Formatierung.In Oracle Wie Subtrahieren vorherigen Wert in einer Spalte mit Berechnung der anderen Spalte
Antwort
habe ich einen kleinen Tisch für Testzwecke ähnlich wie bei Ihnen. Dann zeigt die Abfrage unten, wie man diese Art von Problem löst, indem man analytische Funktionen verwendet. Es ist keine Zeile-für-Zeile-Verarbeitung erforderlich.
create table t (mgt_year, tot_dflt_mgt, tot_accum_mgt) as (
select 2013, 10, null from dual union all
select 2014, 15, null from dual union all
select 2015, 9, null from dual union all
select 2016, 20, 600 from dual
);
select * from t;
MGT_YEAR TOT_DFLT_MGT TOT_ACCUM_MGT
-------- ------------ ------------
2013 10
2014 15
2015 9
2016 20 600
select mgt_year, tot_dflt_mgt,
max(tot_accum_mgt) over() -
nvl(sum(tot_dflt_mgt) over
(order by mgt_year
rows between 1 following and unbounded following)
, 0) as tot_accum_mgt
from t;
MGT_YEAR TOT_DFLT_MGT TOT_ACCUM_MGT
-------- ------------ -------------
2016 10 556
2014 15 571
2015 9 580
2016 20 600
Vielleicht jede Zeile seines Vorjahr anschließen?
Select y1.mgt_year ,y2.mgt_year ,(y1.to_accum_mgt - y2.tot_accum_mgt) as myresult from mytable y1 inner join mytable y2 on y1.mgt_year = (y2.mgt_year -1)
Dies wird nicht funktionieren, da die meisten Werte 'y1.to_accum_mgt' beim Start" null "sind, also wird das Ergebnis der Subtraktion auch 'null' sein. Sie denken wahrscheinlich daran, die Antworten nacheinander zu berechnen, aber so funktioniert SQL nicht. – mathguy
@mathguy, nein ich habe das OP verstanden, dass das Bild die Eingabetabelle war, vielleicht missverstehe ich es. Die Tabelle, die Sie erstellt haben, hat NULL in der dritten Spalte, seine nicht. Aber vielleicht bedeutet das OP, dass es das Ergebnis ist, nach dem er sucht. – Degan
Sie missverstehen. Sehen Sie den Austausch unter dem ursprünglichen Post, wo ich das OP fragte und er bestätigte. Ich finde, dass es immer am besten ist, diesen Prozess zu durchlaufen, bevor man versucht, ein Problem zu lösen. Das habe ich auch in diesem Fall gemacht. – mathguy
- 1. , wie die nächste Zeile der vorherigen Zeile der Spalte Wert verwenden Spalte Wert für die Berechnung
- 2. Python-Code Spalte einer Zeile mit der vorherigen Zeile Spalte aus einer Datei
- 3. neue Spalte in Tabelle mit Wert abhängig Wert einer anderen Spalte in der gleichen Tabelle hinzufügen
- 4. Zelle in einer Spalte von der vorherigen in xlsx-Datei in Python subtrahieren
- 5. Oracle-Berechnung mit Ergebnissen einer anderen Berechnung
- 6. Split Spalte in MySQL-Tabelle in muti Spalte Abfrage Wert in einer anderen Spalte basiert mit
- 7. Subtrahieren Zeilen in Abhängigkeit von den Werten einer anderen Spalte
- 8. Suchen Spalte Wert in einer anderen Spalte enthalten R
- 9. Verwendung von Ergebnis aus einer Spalte in Berechnung in einer anderen Spalte in MSSQL Server
- 10. subtrahieren jede Spalte voneinander Spalte in einer R data.table
- 11. SQLName Wert mit dem höchsten Wert in einer anderen Spalte
- 12. finden nicht doppelten Wert in einer Spalte auf der Basis bekannter Wert einer anderen Spalte
- 13. Excel Inkrementieren Sie einen Wert in der Spalte basierend auf Wert in einer anderen Spalte
- 14. Begrenzung der Summe einer Spalte mit einem Wert in einer anderen Spalte
- 15. gemeinsamen Wert in einer Spalte gegen eindeutigen Wert in einer anderen Spalte in Pandas
- 16. Wert hinzufügen Spalte mit einer anderen Spalte als Schlüssel
- 17. CSV-Spalte Wert Berechnung in Java
- 18. Füllen Spalte in CSV mit vorherigen Wert mit Shell
- 19. Oracle - Sequenz abhängig von einer anderen Spalte?
- 20. Pandas Multi-Index subtrahieren von Wert basierend auf Wert in anderen Spalte Teil 2
- 21. Split Spalte in Oracle
- 22. subtrahieren zwei Spalte in Mysql
- 23. SQL - Ersetzen Wert der Spalte aus einer anderen Spalte Wert mit der Bedingung
- 24. propagiere Änderungen in einer Spalte
- 25. Subtrahieren Mindestwert von allen Werten in einer Spalte
- 26. subtrahieren zwei mit Datum in einer extra Spalte in SQL
- 27. R: subtrahieren Werte von Zeilen basierend auf einer anderen Spalte
- 28. Wie COUNT Wert einer anderen Tabelle in Spalte einer Tabelle
- 29. Werte in einer Spalte basierend auf einer anderen Spalte aktualisieren
- 30. Wie kann ich Werte in einer Spalte basierend auf dem Wert in einer anderen Spalte zusammenfassen?
Bitte senden Daten als formatierten Text, [nicht Screenshots] (http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on- So-wenn-eine Frage zu stellen/285557 # 285557) – Aleksej
Sie müssen sehr klar erklären, was die EINGÄNGE sind und was der gewünschte AUSGANG ist. Wenn ich richtig verstehe, erhält man mehrere Zeilen in drei Spalten. In jeder Zeile wird das Jahr angegeben, für jede Zeile der Wert "tot_dflt_mgt" und für die letzte Zeile "tot_accum_mgt". Aus diesen Eingaben muss für jede Zeile "tot_accum_mgt" berechnet werden. Ist das korrekt? Bitte bestätigen. – mathguy
Ja, die dritte Spalte hat berechnete Werte. In der dritten Spalte "tot_accum_mgt" wird nur der Wert für das Jahr ** 2016 ** angegeben. Alle oben genannten Werte werden berechnet. – Ameya