Maison > base de données > tutoriel mysql > Comment puis-je fusionner deux tables SQL avec des dates qui se chevauchent et garantir des valeurs de date uniques dans le résultat ?

Comment puis-je fusionner deux tables SQL avec des dates qui se chevauchent et garantir des valeurs de date uniques dans le résultat ?

DDD
Libérer: 2024-12-27 20:26:18
original
130 Les gens l'ont consulté

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

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
);
Copier après la connexion

À 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;
Copier après la connexion

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;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal