sql - 如何交叉连接但在 BIGQUERY 中使用最新值
问题描述
我在下面有这张表
日期 | ID | 价值 |
---|---|---|
2021-01-01 | 1 | 3 |
2021-01-04 | 1 | 5 |
2021-01-05 | 1 | 10 |
我希望这样的输出,其中date
列总是每天增加,value
列将生成最后一个值id
日期 | ID | 价值 |
---|---|---|
2021-01-01 | 1 | 3 |
2021-01-02 | 1 | 3 |
2021-01-03 | 1 | 3 |
2021-01-04 | 1 | 5 |
2021-01-05 | 1 | 10 |
2021-01-06 | 1 | 10 |
我想我可以使用交叉连接,但我无法获得预期的输出,并认为有一种特殊的语法/逻辑可以解决这个问题
解决方案
考虑以下方法
select * from `project.dataset.table`
union all
select missing_date, prev_row.id, prev_row.value
from (
select *, lag(t) over(partition by id order by date) prev_row
from `project.dataset.table` t
), unnest(generate_date_array(prev_row.date + 1, date - 1)) missing_date
推荐阅读
- pandas - 根据同一熊猫数据框中其他列中的值创建包含布尔值或 NaN 的新列
- asp.net-mvc - 如何将文本文件加载到 ASP.NET MVC 中的文本框中?
- java - 字符串操作:为什么方法 1 不如方法 2 有效
- flutter - 定位小部件工作但对齐小部件在颤动的堆栈小部件中不起作用
- angular - 角度行为主题;“下一个”方法不起作用
- java - 来自retrofit2 api请求的android中的响应正文始终为空
- javascript - 带有打开图“og:url”的Javascript Facebook共享对话框不起作用
- json - JPA 和 JSON 运算符本机更新查询
- go - go mod 子目录结构
- python - GUI 未出现在桌面上