【问题标题】:Populating rows in table with previous row value oracle sql用前一行值oracle sql填充表中的行
【发布时间】:2021-05-16 18:26:08
【问题描述】:
+----+---------+-------+--------+---------+--------+
| 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 是否更喜欢

尝试了一些东西......但在每个人的第二行之后它又回到了 null

【问题讨论】:

  • 我不知道如何格式化表格以使它们看起来不错......请任何知道的人请格式化它们并发布如何
  • 天哪,戈登·林诺夫,我拥有你的书! sql和excel

标签: sql oracle plsql oracle11g oracle-apex


【解决方案1】:

一种方法是lag(ignore nulls):

select coalesce(name, lag(name ignore nulls) over (order by id)),
       . . .
from t;

这是从name 列中获取先前的非NULL 值,其中“previous”基于id 列的顺序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 2020-09-14
    • 2013-12-23
    • 2022-01-16
    • 2021-10-01
    • 1970-01-01
    相关资源
    最近更新 更多