SQL服务器table改造

SQL Server table transformation

我有一个 table 像这样的东西:

due_date flag
2019-02-01 FALSE
2019-01-01 FALSE
2018-12-01 FALSE
2018-11-01 TRUE
2018-10-01 FALSE
2018-09-01 FALSE
2018-08-01 TRUE

输出table是:

due_date flag group
2019-02-01 FALSE 1
2019-01-01 FALSE 1
2018-12-01 FALSE 1
2018-11-01 TRUE 2
2018-10-01 FALSE 3
2018-09-01 FALSE 3
2018-08-01 TRUE 4

我试过使用滞后函数,使用这个查询

SELECT 
    *, 
    LAG(flag, 1, 'FALSE') OVER (ORDER BY due_date DESC) AS lag_flag
FROM 
    tableName

结果会变成这样:

due_date flag lag_flag
2019-02-01 FALSE FALSE
2019-01-01 FALSE FALSE
2018-12-01 FALSE FALSE
2018-11-01 TRUE FALSE
2018-10-01 FALSE TRUE
2018-09-01 FALSE FALSE
2018-08-01 TRUE FALSE

现在我卡在了这一步。任何人都可以向我建议下一步? (也请告诉我查询)

注意:我使用的是SQL服务器

用 1 标记一组的开始并计算起始标记的滚动总数。

select due_date, flag, sum(f) OVER (ORDER BY due_date desc) x
from(
  select due_date, flag, 
     case when LAG(flag, 1, 'unknown') OVER (ORDER BY due_date desc) = flag then 0 else 1 end f
  from tbl
) t
ORDER BY due_date desc