编写mysql脚本,计算不同产品每日进销存,输出日期,产品,进货量,出库量,日累计结余;一张表有日期,产品,进货量;另一张表有日期,产品,出库量;不使用full outer join,且包含不存在其中一张表的日期
时间: 2024-01-07 15:02:44 浏览: 218
进销存系统mysql建库脚本
可以使用 UNION ALL 和子查询来实现,以下是示例脚本:
```
SELECT date, product, SUM(stock_in) AS stock_in, SUM(stock_out) AS stock_out, SUM(stock_in - stock_out) AS balance
FROM
(SELECT date, product, quantity AS stock_in, 0 AS stock_out
FROM table1
UNION ALL
SELECT date, product, 0 AS stock_in, quantity AS stock_out
FROM table2) AS t
GROUP BY date, product
ORDER BY date, product;
```
解释一下:
首先,我们使用 UNION ALL 将两张表中的数据合并成一张表。因为两张表中的字段名和数据类型相同,所以可以直接使用 UNION ALL。
接着,我们使用子查询将每个进货量和出库量分别转换为一列,并将另一列填充为 0。这样,在合并后的表中,每个记录都包含了进货量和出库量,并且可以区分它们的来源。
最后,我们按照日期和产品对结果进行分组,并计算出日累计结余。
需要注意的是,这里使用了 SUM 函数来计算进货量、出库量和日累计结余。因为我们已经将每个进货量和出库量转换为一列,所以可以直接使用 SUM 函数对它们进行汇总。
另外,由于我们使用了 UNION ALL,因此可以包含不存在于其中一张表中的日期。如果要排除这些日期,可以使用 INNER JOIN 或 LEFT JOIN。
阅读全文