如何计算新列在哪里 NULL
值来自 Number
列是否将替换为以前的非空列?不是 NULL
那些应该保持不变。全部在分区内 Customer
.
+----------+------------+--------+
| Customer | Date | Number |
+----------+------------+--------+
| A | 2016-01-01 | 9,00 |
| A | 2020-01-01 | NULL |
| A | 2020-01-15 | 10,00 |
| A | 2020-02-01 | NULL |
| A | 2020-03-01 | NULL |
| A | 2020-03-15 | 11,00 |
| A | 2020-04-01 | NULL |
| B | 2016-01-01 | 9,00 |
| B | 2020-01-01 | NULL |
| B | 2020-01-15 | 10,00 |
| B | 2020-02-01 | NULL |
| B | 2020-03-01 | NULL |
| B | 2020-03-15 | 11,00 |
| B | 2020-04-01 | NULL |
+----------+------------+--------+
假设:
输入数据为 ORDER BY Customer, Date
,输出也应如此
第一排(最老的一排) Customer
永远都有 Number
不同于 NULL
2条答案
按热度按时间cedebl8k1#
如果支持sql server,这将更容易
lag(ignore nulls)
. 但事实并非如此。您可以通过对具有值的行进行累计计数,然后分散这些值来定义组:你也可以用
apply
,但我怀疑在几乎所有情况下,上述方法都更快。hxzsmxv22#