ホームページ >データベース >mysql チュートリアル >SQL テーブルをマージして一意の日付値を確保する方法
一意の日付を持つテーブルのマージ
SQL では、一意の日付値を維持しながら 2 つのテーブルをマージするのが一般的なタスクです。 Inbound テーブルと Outbound テーブルをマージする問題の解決策は次のとおりです。
最初のステップは、UNION ALL 演算子を使用してテーブルをマージすることです。この演算子は、重複を削除せずに両方のテーブルの行を結合します:
(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 )
次に、重複する日付を削除する必要があります。このため、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;
この最後のクエリの結果、必要に応じて一意の日付値を持つテーブルが生成されます。出力は、指定した例と同様になります:
Date Product Inbound Outbound 2017-05-13 Product A 400 1 2017-09-04 Product C 380 0 2017-10-18 Product C 0 1 : : : : : : : : 2018-09-10 Product B 200 1 : : : : : : : :
以上がSQL テーブルをマージして一意の日付値を確保する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。