我有一个表,其中包括一个带有日期的字段(称为date)和一个带有累计运行总数(称为x)的字段|称为表示例。
***我的野外数据不包括周末和节假日。
我可以通过简单地减去“x”中所选的任何值,然后从上面的行中减去,来找到每天数字中的增量。
以下是我当前的查询:
select
date,
a.X - b.X as 'Daily Total'
from SAMPLE as a
left join SAMPLE as b
on b.date = if(weekday(a.date) = 0 , a.date - interval 3 day, a.date- interval 1 day);
问题是,在我遇到节假日之前,上述值都是有效的。如果星期一是假日,那么这些值将返回null,因为a.date-interval 1 day将不存在。解决假期问题最好的办法是什么?
目前的结果如下:
+------------+---------------+
| date | X |
+------------+---------------+
| 2018-03-26 | -40105.00 |
| 2018-03-27 | 28470.00 |
| 2018-03-28 | 5265.00 |
| 2018-03-29 | -23010.00 |
| 2018-04-02 | NULL |
| 2018-04-03 | -24830.00 |
| 2018-04-04 | -21970.00 |
| 2018-04-05 | -9620.00 |
| 2018-04-06 | 36465.00 |
提前谢谢!!
1条答案
按热度按时间ssm49v7z1#
我将按日期对表排序,然后指定一个从1到n的序列或一系列数字。然后,我将从除第一行以外的前一行中减去当前行的值。对于第一行,我将复制值x。