如何解决使用前一行值 oracle sql 填充表中的行
+----+---------+-------+--------+---------+--------+
| id | counter | name | duties | remarks | monies |
+----+---------+-------+--------+---------+--------+
| 1 | 1 | jake | | | |
| 2 | 0 | | clean | misc | 12k |
| 3 | 1 | james | | | |
| 4 | 0 | | clean | misc | 12k |
| 5 | 0 | | soap | misc | 12k |
| 6 | 0 | | shower | misc | 12k |
| 7 | 1 | john | | | |
| 8 | 0 | | dry | misc | 12k |
| 9 | 0 | | scrub | misc | 12k |
+----+---------+-------+--------+---------+--------+
上面的数据是按人分组的,然后列出了他们的职责:
我需要一种使用 oracle sql 使数据看起来像这样的方法:
+----+---------+-------+--------+---------+--------+
| id | counter | name | duties | remarks | monies |
+----+---------+-------+--------+---------+--------+
| 1 | 1 | jake | | | |
| 2 | 0 | jake | clean | misc | 12k |
| 3 | 1 | james | | | |
| 4 | 0 | james | clean | misc | 12k |
| 5 | 0 | james | soap | misc | 12k |
| 6 | 0 | james | shower | misc | 12k |
| 7 | 1 | john | | | |
| 8 | 0 | john | dry | misc | 12k |
| 9 | 0 | john | scrub | misc | 12k |
+----+---------+-------+--------+---------+--------+
在迭代每一行时有点麻烦...不要介意它的 plsql - sql 是否更喜欢
尝试了一些东西......但它在每个人的第 2 行之后返回 null
解决方法
一种方法是lag(ignore nulls)
:
select coalesce(name,lag(name ignore nulls) over (order by id)),. . .
from t;
这是从 NULL
列中获取前一个非 name
值,其中“previous”基于 id
列的排序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。