suchen
HeimDatenbankMySQL-TutorialWie kann die gepoolte Losmenge mithilfe von SQL Recursive CTE reduziert werden?

How to Reduce Pooled Lot Quantity Using SQL Recursive CTE?

Verwendung des rekursiven SQL-CTE zum Dekrementieren gepoolter Losmengen

Diese SQL Server 2005-Lösung verwendet einen rekursiven Common Table Expression (CTE), um gepoolte Losmengen basierend auf Verbrauchsdaten iterativ zu reduzieren. Der Prozess bewältigt effizient Szenarien, in denen der Verbrauch die verfügbare Menge über mehrere Chargen innerhalb eines Pools hinweg übersteigt.

Hier ist der SQL-Code:

-- Sample data setup
DECLARE @Pooled_Lots AS TABLE (
  Id INT,
  Pool INT,
  Lot INT,
  Quantity INT
);

INSERT INTO @Pooled_Lots (Id, Pool, Lot, Quantity) VALUES
(1, 1, 1, 5),
(2, 1, 2, 10),
(3, 1, 3, 4),
(4, 2, 1, 7),
(5, 3, 1, 1),
(6, 3, 2, 5);

DECLARE @Pool_Consumption AS TABLE (
  Id INT,
  PoolId INT,
  QuantityConsumed INT
);

INSERT INTO @Pool_Consumption (Id, PoolId, QuantityConsumed) VALUES
(1, 1, 17),
(2, 2, 8),
(3, 3, 10);


-- Recursive CTE to calculate remaining quantities
WITH LotQuantities AS (
    SELECT 
        PL.Pool, 
        PL.Lot, 
        PL.Quantity, 
        PC.QuantityConsumed,
        PL.Quantity as RunningQuantity,
        PC.QuantityConsumed as RemainingDemand,
        CASE WHEN PL.Quantity >= PC.QuantityConsumed THEN 0 ELSE PC.QuantityConsumed - PL.Quantity END as SurplusOrDeficit
    FROM @Pooled_Lots PL
    LEFT JOIN @Pool_Consumption PC ON PL.Pool = PC.PoolId
    WHERE PL.Lot = 1 -- Start with the first lot in each pool

    UNION ALL

    SELECT 
        lq.Pool, 
        PL.Lot, 
        PL.Quantity, 
        lq.QuantityConsumed,
        CASE WHEN lq.RemainingDemand > PL.Quantity THEN lq.RunningQuantity + PL.Quantity ELSE lq.QuantityConsumed END,
        CASE WHEN lq.RemainingDemand > PL.Quantity THEN lq.RemainingDemand - PL.Quantity ELSE 0 END,
        CASE WHEN lq.RemainingDemand > PL.Quantity THEN 0 ELSE lq.RemainingDemand - (lq.RunningQuantity + PL.Quantity) END
    FROM LotQuantities lq
    JOIN @Pooled_Lots PL ON lq.Pool = PL.Pool AND PL.Lot = lq.Lot + 1
    WHERE lq.RemainingDemand > 0
)
SELECT * FROM LotQuantities;

Der resultierende Datensatz zeigt die verbleibende Menge für jede Charge nach dem Verbrauchsabzug. Der CTE verarbeitet die Chargen innerhalb jedes Pools rekursiv, bis die verbrauchte Menge vollständig berücksichtigt ist. Beachten Sie, dass negative Werte in SurplusOrDeficit auf ein Defizit hinweisen.

Das obige ist der detaillierte Inhalt vonWie kann die gepoolte Losmenge mithilfe von SQL Recursive CTE reduziert werden?. 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
MySQL String Typen: Speicher, Leistung und Best PracticesMySQL String Typen: Speicher, Leistung und Best PracticesMay 10, 2025 am 12:02 AM

MySQLstringtypesimpactstorageandperformanceasfollows:1)CHARisfixed-length,alwaysusingthesamestoragespace,whichcanbefasterbutlessspace-efficient.2)VARCHARisvariable-length,morespace-efficientbutpotentiallyslower.3)TEXTisforlargetext,storedoutsiderows,

MySQL -String -Typen verstehen: Varchar, Text, Zeichen und mehrMySQL -String -Typen verstehen: Varchar, Text, Zeichen und mehrMay 10, 2025 am 12:02 AM

Mysqlstringtypesincludevarchar, Text, char, enum, undset.1) varcharisversatileforVariable-LengthStringuptoaspecifiedLimit.2) TextissidealforlargetextStorageWithoutadefinedLimit.3) charisfixed-längen, geeigneter ForconsistentDatalikeCodecodes.4) EnumforcesDataTaTaTableConSconsistentDatalikaScodes.4)

Was sind die String -Datentypen in MySQL?Was sind die String -Datentypen in MySQL?May 10, 2025 am 12:01 AM

MySqloffersVariousStringDatatypes: 1) Charforfixed-Länge-Strings, 2) varcharforvariable-Lengthtext, 3) Binary und VarbinaryforBinaryData, 4) BloBandtextForLargedata und 5) Enumandforcontrolledinput

So erteilen Sie neue MySQL -Benutzer BerechtigungenSo erteilen Sie neue MySQL -Benutzer BerechtigungenMay 09, 2025 am 12:16 AM

TOGRANTREMMENTIONSTONEWMYSQLUSERS, folgt der THESESTEPS: 1) AccessMysqlasauser withSuffePrivileges, 2) CreateeNewuserwiththecreateuserCommand, 3) UsetheGrantcommandtospecifificpermissionSlikesSelect, Einfügung, orallprivileSontespezifizierungen, und orallprivileSonegierungen, und orallprivileSonegierungen, und orallprivileSonegierungen, und 4), orallprivileSONSONSONSONSONSORTIONALS, und4) und 4), und 4), und 4)), und 4), orallprivileSoneger

So fügen Sie Benutzer in MySQL hinzu: eine Schritt-für-Schritt-AnleitungSo fügen Sie Benutzer in MySQL hinzu: eine Schritt-für-Schritt-AnleitungMay 09, 2025 am 12:14 AM

Toaddusersinmysqleffektiv und secury, folge theSesteps: 1) UseTheCreatErStatementToaddanewuser, spezifizieren derHostandastrongPassword.2) GrantNeornyprivileGeSusingTheGrantstatement, AdheringTothprincipleastprivilege.3) implementssecurityMectoNityMeaSualslyLection

MySQL: Hinzufügen eines neuen Benutzers mit komplexen BerechtigungenMySQL: Hinzufügen eines neuen Benutzers mit komplexen BerechtigungenMay 09, 2025 am 12:09 AM

ToaddanewuserwithComplexPermissionssinmysql, folge theSeSteps: 1) CreateThEserWithCreatUser'newuser '@' localhost'IdentifiedBy'pa ssword ';. 2) GranTeadaccessToAlltablesin'myDatabase'withGrantSelectonMyDatabase.to'newuser'@'localhost';.

MySQL: String -Datentypen und KollationenMySQL: String -Datentypen und KollationenMay 09, 2025 am 12:08 AM

Die String -Datentypen in MySQL umfassen Zeichen, Varchar, Binär, Varbarin, Blob und Text. Die Kollationen bestimmen den Vergleich und die Sortierung von Saiten. 1.Ch ist für Zeichenfolgen mit fester Länge geeignet. Varchar ist für Zeichenfolgen variabler Länge geeignet. 2. Für Binärdaten werden immer wieder variäarisch verwendet, und Blob und Text werden für große Objektdaten verwendet. 3.. Sortierregeln wie UTF8MB4_unicode_ci ignoriert den oberen und unteren Fall und eignet sich für Benutzernamen. UTF8MB4_BIN ist fallempfindlich und für Felder geeignet, die einen genauen Vergleich erfordern.

MySQL: Welche Länge soll ich für Varchars verwenden?MySQL: Welche Länge soll ich für Varchars verwenden?May 09, 2025 am 12:06 AM

Die beste Auswahl der MySQLVarchar -Spaltenlänge sollte auf der Datenanalyse basieren, zukünftiges Wachstum berücksichtigen, die Leistungsauswirkungen bewerten und die Anforderungen an den Charaktersatz bewerten. 1) Analyse der Daten, um typische Längen zu bestimmen; 2) zukünftige Expansionsraum reservieren; 3) Auf die Auswirkungen großer Länge auf die Leistung achten; 4) Betrachten Sie die Auswirkungen von Zeichensätzen auf die Speicherung. Durch diese Schritte können die Effizienz und Skalierbarkeit der Datenbank optimiert werden.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)