Fusionner deux tables avec des valeurs de date uniques dans SQL
Dans les scénarios d'intégration de données, la fusion de tables avec des structures similaires mais des données potentiellement superposées peut poser un problème défi, en particulier lors de la gestion des valeurs en double. Considérez les deux tables suivantes :
CREATE TABLE Inbound ( Inbound_Date DATE, Product TEXT, InboundType TEXT, Quantity VARCHAR(255) ); CREATE TABLE Outbound ( Outbound_Date DATE, Product TEXT, OutboundType TEXT );
À l'aide d'une requête UNION traditionnelle, ces tables peuvent être fusionnées comme suit :
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;
Cependant, cette approche permet l'existence de dates en double. Pour garantir que chaque date est unique, nous pouvons modifier la requête pour utiliser UNION ALL et GROUP BY :
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;
Cette requête effectue d'abord une opération UNION ALL pour combiner les lignes des deux tables, créant ainsi un seul ensemble. de lignes avec des dates et des produits qui se chevauchent. Il utilise ensuite un bloc de requête imbriqué pour calculer la somme des quantités entrantes et sortantes pour chaque combinaison de date et de produit. Enfin, la clause GROUP BY est appliquée pour éliminer les valeurs de date en double, garantissant que chaque date n'apparaît qu'une seule fois dans le résultat final.
En conséquence, la requête modifiée produit une table avec des dates uniques, ce qui peut être utile pour des tâches d'analyse ou de manipulation de données plus approfondies.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!