【发布时间】:2018-11-19 15:33:47
【问题描述】:
我正在尝试将 ROW_NUMBER 列添加到遵循 [Withdrawal then Fee; 顺序的数据集; Withdrawal then Fee] 基于NETWORKCD 列是否为空。但是,我的 row_number 公式仍在计算 Null,即使它没有显示数字,如下所示:
+--------+-------------+------------+-----------+-------------+
| Acctid | Transaction | PostDate | NetworkCd | PeriodCount |
+--------+-------------+------------+-----------+-------------+
| 12345 | Withdrawal | 10/4/2018 | FRGN | 1 |
| 12345 | Fee | 10/4/2018 | | |
| 12345 | Withdrawal | 10/11/2018 | FRGN | 3 |
| 12345 | Fee | 10/11/2018 | | |
| 12345 | Withdrawal | 10/22/2018 | FRGN | 5 |
| 12345 | Fee | 10/22/2018 | | |
+--------+-------------+------------+-----------+-------------+
我对@987654323@使用以下公式
(case when networkcd is not null
then row_number() over (partition by acctid order by postdate)
end) PeriodCount
我希望 PeriodCount 计数 [1,2,3] 而不是 [1,3,5],如下所示:
+--------+-------------+------------+-----------+-------------+
| Acctid | Transaction | PostDate | NetworkCd | PeriodCount |
+--------+-------------+------------+-----------+-------------+
| 12345 | Withdrawal | 10/4/2018 | FRGN | 1 |
| 12345 | Fee | 10/4/2018 | | |
| 12345 | Withdrawal | 10/11/2018 | FRGN | 2 |
| 12345 | Fee | 10/11/2018 | | |
| 12345 | Withdrawal | 10/22/2018 | FRGN | 3 |
| 12345 | Fee | 10/22/2018 | | |
+--------+-------------+------------+-----------+-------------+
我错过了什么?
【问题讨论】:
-
row_number() 正是在这种情况下,行号,无论您选择显示它还是在 case 语句中用 null 替换它,都不会改变它是哪个行号。
-
@Andrew 这是我的第一个想法,但 networkcd 的 case 语句不是为 null 调整的吗?
-
别担心,Alex 发布的 Dense_Rank 是前进的方向,其工作方式的细微差别