【发布时间】:2018-10-19 06:26:07
【问题描述】:
例如我有下面的表(tb_transaction)
id_trans date_trans production_plant dead_plant distribution_plant
25 2017-12-31 1000 100 200
26 2018-01-17 150 0 0
27 2018-02-07 0 50 100
28 2018-03-07 250 0 75
29 2018-05-10 500 50 0
比我尝试制作一个今年的报告表,如下表
month EarlyStock production dead LivePlant Distri EndStock
January 150 0 150 0 150
February 0 50 -50 100 -150
March 250 0 250 75 175
April 0 0 0 0 0
May 500 50 450 0 450
June 0 0 0 0 0
July 0 0 0 0 0
August 0 0 0 0 0
September 0 0 0 0 0
October 0 0 0 0 0
November 0 0 0 0 0
December 0 0 0 0 0
1 月的 EarlyStock 是 EndStock 2017 年 12 月(假设 12 月的 EarlyStock 为 0),这是来自 tb_transaction 的第一个数据,而 2 月的 EarlyStock 是 EndStock 一月等等。
我期望的表是 比我尝试制作一个今年的报告表,如下表
month EarlyStock production dead LivePlant Distri EndStock
January 700 150 0 850 0 850
February 850 0 50 800 100 700
March 700 250 0 950 75 875
April 875 0 0 875 0 875
May 875 500 50 1325 0 1325
June 0 0 0 0 0
July 0 0 0 0 0
August 0 0 0 0 0
September 0 0 0 0 0
October 0 0 0 0 0
November 0 0 0 0 0
December 0 0 0 0 0
公式为:
- LivePlant = EarlyStock + 生产 - 已死
- EndStock = LivePlant - Distri
有什么建议吗?
【问题讨论】:
-
避免使用
right join。更喜欢“标准”left join -
你的 MySQL 版本是多少?这是一个滚动求和问题。如果您的版本是 8.0.2 及更高版本,则可以使用Window Functions 解决
-
@MadhurBhaiya : 我的 mysql 版本是 5.6,有使用这个 mysql 版本的建议吗?
-
是的,有一种方法可以使用会话变量。会很复杂;试一试。
-
为什么要向我们展示两个结果集?
标签: mysql serialization cumulative-sum