多行空值用 oracle sql 自动填充上一行数据
时间: 2024-09-10 13:03:42 浏览: 136
在Oracle SQL中,如果你想自动填充多行空值以使用上一行的数据,你可以使用窗口函数或者子查询来实现。具体来说,可以使用`LAST_VALUE`窗口函数配合`IGNORE NULLS`或者`CASE`语句来进行数据填充。
使用`LAST_VALUE`窗口函数填充空值的示例SQL可能如下所示:
```sql
SELECT
t.*,
LAST_VALUE(column_name IGNORE NULLS) OVER (ORDER BY sort_column ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS filled_column
FROM
your_table t;
```
这里`column_name`是你想要填充的列名,`sort_column`是用来确定排序的列,通常是包含时间戳或者ID的列。`LAST_VALUE`函数会从当前行向上遍历,直到找到第一个非空值为止,然后将这个值填充到空值的位置。
使用`CASE`语句的另一种方法:
```sql
SELECT
t.*,
CASE
WHEN t.column_name IS NULL THEN LAG(column_name, 1, column_name) OVER (ORDER BY sort_column)
ELSE t.column_name
END AS filled_column
FROM
your_table t;
```
这里`LAG`函数用于获取上一行的`column_name`值,并且`1`表示向上移动一行。`CASE`语句用于判断当前行的值是否为空,如果为空则使用上一行的值,否则使用当前行的值。
阅读全文