2017-04-08 2 views
-1

Ich habe drei Spalten speichern:Gibt es eine Möglichkeit, Daten aus vorheriger Zeile zur aktuellen Zeile zu subtrahieren und zu aktueller Zeile

monthly fee remaining 

Erste Reihe - Bedingung:

subtract fee(row 0) from monthly(row 0) and stored in remaining(row 0) 

Zweite Reihe und Weiter - Bedingung:

subtract fee(this row) from remaining(previous row) and stored in remaining(this row) 

Welche Abfrage soll ich verwenden, um diese Operation durchzuführen? Ich brauche Hilfe in dieser Hinsicht.

+0

Bitte stellen Sie Ihre Frage klar und geben Sie ein Beispiel. Anderen Menschen geholfen, dir zu helfen. – Brain90

+1

Welches Problem versuchen Sie eigentlich zu lösen? Warum müssen Sie das oben genannte tun? Es ist möglicherweise nicht die beste Lösung für Ihr Problem. – Niagaradad

+0

Wie erkennen Sie die ** Reihenfolge ** der Zeilen? Gibt es eine ID-Spalte oder eine Datumsspalte? (All dies sieht verdächtig nach Excel aus ...) –

Antwort

0

Nehmen Sie zwei separate Unterabfragen für diese zwei Spalten und mit den erforderlichen Informationen in beiden Unterabfragen und geben Sie die Zeilennummer in diesem Feld (für die Sie diese Operation ausführen möchten) in jeder möglichen Weise. Jetzt machen Sie Links auf diese beiden Unterabfragen basierend auf Rownummer und Rownummer + 1 auf anderen, jetzt erhalten Sie zwei Spalten in wählen mit Rownumber Feld und Rownumber + 1 Feld beiseite. Nehmen Sie den Unterschied in anderen als anderen Feld auswählen.

Ich hoffe, Sie verstehen es. Bitte machen Sie es gründlich und geben Sie die Reihenfolge in einer bestimmten Spalte an, für die Sie das tun.

+0

Wie erreichen Sie die 'rowumber' in MySql? –

+0

ein bisschen schwierig für mich. Aber bitte versuchen Sie es zu wissen. Können Sie Ihre Antwort mit einem Beispiel erläutern? –

+0

können wir durch Einstellung die Nummer erreichen. Variable wie (wählen Sie @rownumber: = 0) als t, dann können wir es mit Haupttabelle – Rams

0

Wenn Sie vorhaben, nur tatsächlich wie

select @recordnumber:[email protected]+1 as recordnumber, 
@curremaining:=if(@curremaining=0,Monthly,@remaining) prevremaining, 
Monthly, Fee, @remaining:[email protected] as remaining 
from Payments,(select @remaining:=0,@curremaining:=0,@recordnumber:=0) x; 

Sie aussehen würde der Code in einer select-Anweisung tun könnte eine Bestellung durch, wenn die Abfrage die Datensätze in diesem Fall haben, müssen nur den Auftrag hinzufügen, indem Sie auf das Ende der SQL-Anweisung. d. h.

from Payments,(select @remaining:=0,@curremaining:=0,@recordnumber:=0) x 
order by fieldtoorder; 
+0

verbinden, ich möchte nicht Daten aus der Datenbank abrufen. Ich mache es auf Formularebene, also einfach Daten von Element1 der vorherigen Zeile in Element2 der aktuellen Zeile kopieren. –

Verwandte Themen