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

美智

我有以下两个表,您也可以在此处的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
:              :             :              :
:              :             :              :

我需要在代码中进行哪些更改才能使其正常工作?

戈登·利诺夫

使用union allgroup 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;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在一个SQL查询中合并两个表中的两列,并合并COUNT和SUM值

在一个 SQL 查询中合并两个表中的两列,并使用表中的值作为列名

在一个SQL查询中合并(合并)来自两个表的两列

在一个 SQL 查询中合并两个表并使用表名作为列名

将两个SQL查询合并到一个表中

将两个 SQL 查询合并到一个整洁的表中

SQL查询通过关联两个表中的两个单独的单位来从一个表中除一个值

在一个表中但在两列中合并两个查询结果

SQL查询将具有相同列名的两个表合并到一个表中

在一个请求中合并两个查询

在一个datagridview中合并两个查询

如何在PHP代码中将两个表中的两个查询合并为一个查询?

一个表中的两个唯一键 SQL

将两个表合并为一个输出sql查询

在一个查询中合并两个单独的 SQL 查询

在一个表中合并两个实体

两个 SQL 表中的任何一个都有一个值

如何将两个不同的查询合并到一个表中?

如何从一个表中合并两个不同查询的结果

合并两个SELECT查询并在一个表中显示数据?

合并两个列的值,并插入到ms sql中的另一个表中

在Oracle plsql中每个唯一值合并两个索引嵌套表

PHP:在一个查询中的两个表

在一个SQL查询中合并两个COUNT

合并后从两个表中过滤一个值

将两个表中的数据合并到一个输出SQL中

将带有日期字段的两个表合并到一个表中,而不会重叠日期

如何将两个表列合并到SQL Server中的一个表

合并SQL中的两个表和一个公共列