1

如果某些字段为空,我需要添加具有默认值的行。

想象以下 SELECT 子句:

SELECT date, id, name, COALESCE(value1, -1), COALESCE(value2, -1), 
COALESCE(value3, -1) 
FROM (SELECT DATE("startDate" + INTERVAL(seq_ref.seq - 1) MONTH) AS month_ref 
FROM (SELECT seq FROM seq_1_to_36) seq_ref, table) table
WHERE...

以及以下数据集:

date        id   name       value1 value2 value3
2016-01-01  1    TEST LEFT  12     14     22
2016-01-01  1    TEST RIGHT 32     11     74
2016-02-01  1    null       -1     -1     -1
2016-03-01  1    TEST LEFT  09     66     33
2016-03-01  1    TEST RIGHT 13     41     20

好的,所以基本上它会返回一个日期范围内的一些数据。但如果某些月份没有数据,则返回 -1 作为值。我需要知道是否有办法添加两行,如果没有数据,则为 id 和 name 的默认值。

例如:在2016-02-01我应该能够显示一行TEST LEFT-1 到值和TEST RIGHT-1 到值。

编辑:结果应该是这样的

date        id   name       value1 value2 value3
2016-01-01  1    TEST LEFT  12     14     22
2016-01-01  1    TEST RIGHT 32     11     74
2016-02-01  1    TEST LEFT  -1     -1     -1
2016-02-01  1    TEST RIGHT -1     -1     -1
2016-03-01  1    TEST LEFT  09     66     33
2016-03-01  1    TEST RIGHT 13     41     20

那可能吗?

4

1 回答 1

0

您可以使用 IFNULL() 函数。它的工作原理如下: IFNULL(expression, value) 检查表达式是否为空,如果是,则将其替换为 value 参数您可能会执行以下操作:

    SELECT date, id, name, IFNULL(value1, -1), IFNULL(value2, -1), 
IFNULL(value3, -1) 
FROM (SELECT DATE("startDate" + INTERVAL(seq_ref.seq - 1) MONTH) AS month_ref 
FROM (SELECT seq FROM seq_1_to_36) seq_ref, table) table
WHERE...

希望这可以帮助

于 2018-06-12T13:10:47.093 回答