Heim >Datenbank >MySQL-Tutorial >Wie kann ich zwei SQL-Tabellen mit überlappenden Datumsangaben zusammenführen und eindeutige Datumswerte im Ergebnis sicherstellen?
Zusammenführen von zwei Tabellen mit eindeutigen Datumswerten in SQL
In Datenintegrationsszenarien kann das Zusammenführen von Tabellen mit ähnlichen Strukturen, aber potenziell überlappenden Daten ein Problem darstellen Eine Herausforderung, insbesondere beim Umgang mit doppelten Werten. Betrachten Sie die folgenden zwei Tabellen:
CREATE TABLE Inbound ( Inbound_Date DATE, Product TEXT, InboundType TEXT, Quantity VARCHAR(255) ); CREATE TABLE Outbound ( Outbound_Date DATE, Product TEXT, OutboundType TEXT );
Mit einer herkömmlichen UNION-Abfrage können diese Tabellen wie folgt zusammengeführt werden:
SELECT Inbound_Date As Date, Product, SUM(Quantity) as Inbound, 0 as Outbound FROM Inbound GROUP BY 1,2 ) UNION ALL (SELECT Outbound_Date, Product, 0 as Inbound, COUNT("Outbound_Type") as Outbound FROM Outbound GROUP BY 1,2 ) ORDER BY 1,2;
Dieser Ansatz ermöglicht jedoch das Vorhandensein doppelter Datumsangaben. Um sicherzustellen, dass jedes Datum eindeutig ist, können wir die Abfrage so ändern, dass sie UNION ALL und GROUP BY verwendet:
SELECT Date, Product, SUM(Inbound) as Inbound, SUM(Outbound) as Outbound FROM ((SELECT Inbound_Date As Date, Product, SUM(Quantity) as Inbound, 0 as Outbound FROM Inbound GROUP BY 1,2 ) UNION ALL (SELECT Outbound_Date, Product, 0 as Inbound, COUNT(*) as Outbound FROM Outbound GROUP BY 1,2 ) ) io GROUP BY Date, Product;
Diese Abfrage führt zunächst eine UNION ALL-Operation aus, um die Zeilen aus beiden Tabellen zu kombinieren und so einen einzigen Satz zu erstellen von Zeilen mit überlappenden Daten und Produkten. Anschließend wird mithilfe eines verschachtelten Abfrageblocks die Summe der eingehenden und ausgehenden Mengen für jede Datums- und Produktkombination berechnet. Abschließend wird die GROUP BY-Klausel angewendet, um doppelte Datumswerte zu eliminieren und sicherzustellen, dass jedes Datum nur einmal im Endergebnis vorkommt.
Als Ergebnis erzeugt die geänderte Abfrage eine Tabelle mit eindeutigen Datumsangaben, was nützlich sein kann für weitere Analyse- oder Datenmanipulationsaufgaben.
Das obige ist der detaillierte Inhalt vonWie kann ich zwei SQL-Tabellen mit überlappenden Datumsangaben zusammenführen und eindeutige Datumswerte im Ergebnis sicherstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!