ホームページ > データベース > mysql チュートリアル > SQL でインバウンドおよびアウトバウンドの製品移動データをマージするときに、一意の日付を表示するにはどうすればよいですか?

SQL でインバウンドおよびアウトバウンドの製品移動データをマージするときに、一意の日付を表示するにはどうすればよいですか?

DDD
リリース: 2024-12-25 22:42:10
オリジナル
296 人が閲覧しました

How Can I Display Unique Dates When Merging Inbound and Outbound Product Movement Data in SQL?

テーブルの結合と日付の統合

SQL では、複数のテーブルのデータを結合することが包括的な分析に不可欠です。この問題では、製品の移動を追跡する 2 つのテーブル (Inbound と Outbound) を結合する必要があります。最初のクエリはこれらのテーブルを効果的にマージしますが、日付を一意に表示するには追加の要件があります。

UNION ALL および GROUP BY を使用した一意の日付表示

一意を実現するには日付表示の場合、元のクエリを変更して、GROUP と組み合わせて UNION ALL を使用できます。 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;
ログイン後にコピー

変更の内訳:

  • UNION ALL は、それぞれが元のテーブルの 1 つを表す 2 つのサブクエリの結果を結合します。
  • サブクエリは、Inbound_Date (日付としてエイリアス) と Product によってデータをグループ化します。受信、送信の場合は Outbound_Date および Product ごとです。
  • これらのサブクエリをネストすることにより、受信数量と送信数量が列に分離されます。
  • 外側の GROUP BY 句は、日付と製品ごとにデータをさらに集計し、重複する日付は削除されます。

出力解釈:

変更されたクエリにより、目的の出力が生成されます:

Date Product Inbound Outbound
2017-05-23 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート