sql - 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
我想做的是为日期范围内的每个日期添加一行。这在视图查询中是否可能,而无需设置单独的日期表?
非常感谢任何帮助
解决方案
是的,您可以为此使用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
推荐阅读
- javascript - 验证输入日期超过 18 年的问题
- react-native - 带有预填充文本的应用内信使 API
- java - Java - 淡化和显示图像的不同方法
- mysql - mysql:如何创建一个从另一个表中查找值的计算字段
- node.js - Heroku在错误的文件夹中搜索index.html,如何解决?
- c# - 上传时自定义 HttpContent 失败
- reactjs - 使用 React Navigation 导航堆栈时重新渲染组件
- javascript - 使用 iframe 嵌入同一页面而不创建 iframe 的无限循环
- libvirt - 如何恢复 libvirt 网络默认配置文件?
- c++ - 构造函数/函数声明参数列表中的统一初始化