查询数据如下所示,数据库中没有 2021-10-03 天的记录。
| 日期 | 价值 |
|---|---|
| 2021-10-01 | 100 |
| 2021-10-02 | 90 |
| 2021-10-04 | 10 |
| 2021-10-05 | 40 |
我想使用 as SELECT ... WHERE date BETWEEN '2021-10-01' AND '2021-10-05' 之间的日期执行查询,如果特定日期不存在数据,则检索零作为举例如下:
| 日期 | 价值 |
|---|---|
| 2021-10-01 | 100 |
| 2021-10-02 | 90 |
| 2021-10-03 | 10 |
| 2021-10-04 | 10 |
| 2021-10-05 | 40 |
可能吗?在大查询?
我尝试了下面的查询,但检索到了重复的值。
WITH `project.myproject` AS (
SELECT
DATA_VENDA AS date,
CAST(SUM(VLR_VENDA_TABELA) AS FLOAT64) AS total,
FROM `project.myproject`
WHERE
(DATA_VENDA BETWEEN '2020-10-02'
AND '2020-10-07')
AND COD_CP = '0000010232'
GROUP BY
DATA_VENDA
ORDER BY
DATA_VENDA
),
dates AS (
SELECT total, date
FROM `project.myproject`, UNNEST(GENERATE_DATE_ARRAY(date('2020-10-02'), date('2020-10-07'))) AS date
)
SELECT d.date, IFNULL(t.total, 0) total
FROM dates d
LEFT JOIN `project.myproject` t
ON d.date = t.date
AND d.total = t.total
ORDER BY d.date