【发布时间】:2021-07-18 02:55:26
【问题描述】:
我有一个类似于下面的表格:
| Group | TradeMonth | flag |
|---|---|---|
| A | Jan | 1 |
| A | Mar | 1 |
| A | Mar | 0 |
| A | Jun | 0 |
| B | Feb | 1 |
| B | Apr | 1 |
| B | Sep | 1 |
| B | Sep | 1 |
我需要有一列用于计算 每个组具有非零值 (flag=1) 的不同个月数。我更喜欢使用窗口函数(不是分组依据),并且我知道在 sql server 的窗口函数中不允许使用不同的计数,因此非常感谢任何关于如何使用窗口函数计算它的解决方案。 结果应该如下:
| Group | TradeMonth | flag | #of flagged_months(Distinct) |
|---|---|---|---|
| A | Jan | 1 | 2 |
| A | Mar | 1 | 2 |
| A | Mar | 0 | 2 |
| A | Jun | 0 | 2 |
| B | Feb | 1 | 3 |
| B | Apr | 1 | 3 |
| B | Sep | 1 | 3 |
| B | Sep | 1 | 3 |
【问题讨论】:
-
B 的 3 怎么样?
-
@AmitVerma 逻辑是“flag=1 的不同月份数”,所以对于 B,它是 3。
标签: sql sql-server