【发布时间】:2021-10-21 13:13:19
【问题描述】:
我有以下数据:
| ID | Date | Total |
|---|---|---|
| A | 2021-09-03 | 0 |
| A | 2021-09-04 | 12 |
| A | 2021-09-05 | 37 |
| A | 2021-09-06 | 40 |
| B | 2021-08-03 | 20 |
| B | 2021-08-04 | 43 |
| B | 2021-08-05 | 75 |
从这些数据中,我想得到下表:
| ID | Date | Total | Daily |
|---|---|---|---|
| A | 2021-09-03 | 0 | 0 |
| A | 2021-09-04 | 12 | 12 |
| A | 2021-09-05 | 37 | 25 |
| A | 2021-09-06 | 40 | 3 |
| B | 2021-08-03 | 20 | 20 |
| B | 2021-08-04 | 43 | 23 |
| B | 2021-08-05 | 75 | 32 |
我尝试了以下代码,但我得到了很多重复:
CREATE TABLE table_b AS (
SELECT a.ID, a.Date, a.Total,
a.Total - coalesce(b.Total, 0) AS Daily
FROM table_a a left outer JOIN table_a b
ON (a.ID = b.ID AND b.Date < a.Date));
提前致谢:)
【问题讨论】:
-
table_b 是秘密吗?
-
没有?它是使用附加代码创建的表,但我希望它像我在描述中显示的那样。
-
你加入了一个table_b并尝试创建一个在mysql中不起作用的table_b,所以内部table_b必须在运行代码之前存在,请更正查询,这样它就不会感觉你试图减去什么
-
啊,我的错,这是一个错字。现在它已经修复了。
-
table 是一个受限词,不能在查询中使用,所以你尝试生成一个运行总和?