使用介于两者之间的值填充日期-MySQL

时间:2018-12-28 18:20:35

标签: mysql case

我有一个包含三个字段的表。我正在使用mysql workbench 6.3,并且对数据库具有只读访问权限。

ID    REVENUE    DATEFIELD
-1    100        2018-01-05
 1    200        2018-02-03
 3      0        NULL
 6    700        2018-03-05
 9    400        2018-06-30
10      0        NULL
11      0        NULL
12      0        NULL

当收入为0时,日期字段包含NULL值。 我试图用两行之间的值填充此DATEFIELD中的NULL值。

例如:

ID REVENUE         DATEFIELD
-1     100        2018-01-05
 1     200        2018-02-03
 3       0        2018-02-05
 6     700        2018-03-05
 9     400        2018-06-30
10       0        2018-06-30
11       0        2018-06-30
12       0        2018-06-30

谢谢!

1 个答案:

答案 0 :(得分:0)

评论中提到的类似

SELECT 
  ID, 
  REVENUE, 
  CASE WHEN DATEFIELD IS NULL 
    THEN @d := @d + INTERVAL 1 DAY 
    ELSE @d := DATEFIELD 
  END as DATEFIELD
FROM yourtable t, (SELECT @d := CURRENT_DATE - INTERVAL 999 DAY) r
ORDER BY ID

@d初始化为999天之前。如果datefield列为null,则采用@d的最后一个值,并向其添加一天(并返回),否则采用datevalue的行值并将其存储在@d中(并返回)