Heim >Datenbank >MySQL-Tutorial >Wie subtrahiere ich erschöpfende Werte aus mehreren SQL-Zeilen basierend auf der Verbrauchsreihenfolge?

Wie subtrahiere ich erschöpfende Werte aus mehreren SQL-Zeilen basierend auf der Verbrauchsreihenfolge?

Barbara Streisand
Barbara StreisandOriginal
2025-01-10 09:40:42883Durchsuche

How to Subtract Depleting Values from Multiple SQL Rows Based on Consumption Order?

Subtrahieren Sie abnehmende Werte von Zeilen basierend auf der Verbrauchsreihenfolge in SQL

Wenn es sich um ein Szenario mit abnehmender Menge handelt, bei dem eine Tabelle Menge von einer anderen Tabelle verbraucht, muss eine Möglichkeit gefunden werden, den verbrauchten Wert angemessen von der Zeile zu subtrahieren. Diese Frage stellt eine Situation dar, in der die „Verbrauchsmenge“ aufgrund verschiedener Bedingungen von mehreren Zeilen abgezogen werden muss.

Die Aufgabe kann in folgende Schritte unterteilt werden:

  1. Wenn nicht die letzte Zeile:

    • Berechnen Sie „Verbrauchsmenge aus Charge“ als Differenz zwischen Menge und verbrauchter Menge (wenn die verbrauchte Menge geringer als die Menge ist) oder als die Menge selbst.
  2. Wenn es mehr Zeilen gibt:

    • Reduzieren Sie die verbrauchte Menge um die verbrauchte Menge der vorherigen Charge.
  3. Wiederholen Sie die Schritte 1-2, bis Sie die letzte Reihe erreicht haben.

  4. Wenn es die letzte Zeile ist:

    • Stellen Sie die verbrauchte Menge aus der Charge auf die verbleibende verbrauchte Menge ein.

Die in der Antwort bereitgestellte SQL-Abfrage führt diese Schritte mithilfe von Common Table Expressions (CTE) effizient aus. Es wählt zunächst die erste Charge jedes Pools aus und berechnet die Laufmenge und den verbleibenden Bedarf basierend auf der verbrauchten Menge. Anschließend wird eine rekursive Vereinigung verwendet, um jedem Pool nachfolgende Chargen hinzuzufügen und die Laufmenge und den verbleibenden Bedarf zu aktualisieren.

Abschließend wird der Überschuss oder das Defizit der letzten Leitung für jeden Pool berechnet, indem die Laufmenge vom verbleibenden Bedarf abgezogen wird. Der resultierende Satz von Zeilen und Spalten liefert die gewünschte Ausgabe, wobei die verbrauchte Menge aus der zusammengeführten Charge Zeile für Zeile reduziert wird.

Das obige ist der detaillierte Inhalt vonWie subtrahiere ich erschöpfende Werte aus mehreren SQL-Zeilen basierend auf der Verbrauchsreihenfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn