在一个SQL查询中合并两个表,并使日期值唯一?mysql-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

在一个SQL查询中合并两个表,并使日期值唯一?mysql

2020-05-17 14:28:43 267 1

我有以下两个表,您也可以在此处的SQL提琴中找到它们:

CREATE TABLE Inbound ( Inbound_Date DATE, Product TEXT, InboundType TEXT, Quantity VARCHAR(255) );

INSERT INTO Inbound (Inbound_Date, Product, InboundType, Quantity) VALUES ("2017-05-23", "Product A", "Supplier", "400"), ("2018-09-10", "Product B", "Supplier", "200"), ("2018-12-14", "Product B", "Supplier", "600"), ("2019-01-03", "Product A", "Return", "700"), ("2019-02-15", "Product C", "Supplier", "650"), ("2017-09-04", "Product C", "Supplier", "380"), ("2019-01-09", "Product A", "Return", "120"), ("2019-02-16", "Product A", "Return", "470"), ("2019-02-12", "Product A", "Supplier", "920"), ("2019-02-15", "Product C", "Return", "860"), ("2018-01-03", "Product B", "Supplier", "610");

CREATE TABLE Outbound ( Outbound_Date DATE, Product TEXT, OutboundType TEXT );

INSERT INTO Outbound (Outbound_Date, Product, OutboundType) VALUES ("2017-05-23", "Product A", "Sale_US"), ("2018-09-10", "Product B", "Sale_DE"), ("2018-12-18", "Product B", "Sale_DE"), ("2019-02-01", "Product A", "Sale_DE"), ("2019-02-22", "Product C", "Sale_FR"), ("2017-10-18", "Product C", "Sale_NL"), ("2019-04-12", "Product A", "Sale_US"), ("2019-04-12", "Product A", "Sale_FR"), ("2019-04-12", "Product A", "Sale_FR"), ("2019-04-19", "Product C", "Sale_US"), ("2018-05-17", "Product B", "Sale_DE"); 我从这里使用VBA 合并两个表:

(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; 所有这些完美地工作。

但是,现在我希望日期显示为唯一。 结果应如下所示:

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 : : : : : : : : 我需要在代码中进行哪些更改才能使其正常工作?

取消 提交回答
全部回答(1)
  • 保持可爱mmm
    2020-05-17 14:30:10

    使用union all和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;来源:stack overflow

    0 0
相关问答

1

回答

mysql 只有几百条数据的update 更新了10s一般是什么问题,我查询了锁表,机器的io都没发现问题

2019-05-14 13:39:01 3260浏览量 回答数 1

1

回答

MySQL数据中某个字段是XML格式的,查出来就变样了?

2016-05-10 15:04:01 2148浏览量 回答数 1

0

回答

如何利用数据传输中的数据订阅SDK同步云上RDS数据到本地灾备MySQL

2016-03-30 17:16:18 5671浏览量 回答数 0

1

回答

mysql知道两条数据的id,如何交换它们的某项属性值?

2016-03-23 20:19:04 2933浏览量 回答数 1

1

回答

mysql表从第X个取Y个数据怎么写

2016-03-11 16:38:25 1546浏览量 回答数 1

1

回答

如何解决mysql主从复制带来的数据延迟问题?

2016-03-11 14:44:07 3021浏览量 回答数 1

1

回答

mysql 的 update 语句如何一次更新两个表的数据

2016-03-11 14:07:09 3574浏览量 回答数 1

1

回答

Mysql一列数据拆解成几列

2016-03-11 14:00:44 2386浏览量 回答数 1

1

回答

mysql 更新表中中间几行数据的sql语句

2016-03-11 13:48:51 2652浏览量 回答数 1

1

回答

MySql SqlServer 根据id删除表中数据的最优方案

2016-03-11 13:04:14 2201浏览量 回答数 1
66
文章
12595
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载