首页 > 解决方案 > UNION ALL 将缺失的日期添加到表中

问题描述

我目前使用 UNION ALL 根据 current_date - 1 在我的 Big Query 表中添加一行,以确保“昨天”存在一行:

SELECT
  RowDate,
  COUNT(*) AS Records
FROM
  table1
GROUP BY
  RowDate UNION ALL
SELECT
  DATE_SUB(CURRENT_DATE(),
    INTERVAL 1 DAY) AS RowDate,
  0 AS Records
ORDER BY
  RowDate DESC

我想做的是为日期范围内的每个日期添加一行。这在视图查询中是否可能,而无需设置单独的日期表?

非常感谢任何帮助

标签: sqlgoogle-bigquery

解决方案


是的,您可以为此使用GENERATE_DATE_ARRAY函数

例如:

GENERATE_DATE_ARRAY('2018-01-01', '2018-01-31') AS RowDate

所以,在你的具体情况下,它会像下面这样

UNION ALL
SELECT RowDate, 0 AS Records
FROM UNNEST(GENERATE_DATE_ARRAY('2018-01-01', '2018-01-31')) AS RowDate

推荐阅读