Heim >Datenbank >MySQL-Tutorial >Wie kann ich zwei SQL-Tabellen mit überlappenden Datumsangaben zusammenführen und eindeutige Datumswerte im Ergebnis sicherstellen?

Wie kann ich zwei SQL-Tabellen mit überlappenden Datumsangaben zusammenführen und eindeutige Datumswerte im Ergebnis sicherstellen?

DDD
DDDOriginal
2024-12-27 20:26:18134Durchsuche

How Can I Merge Two SQL Tables with Overlapping Dates and Ensure Unique Date Values in the Result?

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!

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