You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Flag字段汇总表格中Kyle的Days数据?

如何使用Flag字段汇总表格中Kyle的Days数据?

原始数据:

RowNameFlagDays
1Kyle012
2Kyle002
3Kyle101
4Kyle118
5Kyle101
6Kyle001
7Kyle101
8Kyle101

期望结果:

RowNameFlagDays
1Kyle012
2Kyle002
3Kyle120
6Kyle001
7Kyle102

SQL实现方案

这属于连续相同Flag分组汇总的问题,核心逻辑是把连续的Flag=1行归为一组,汇总Days并保留每组首个Row号;Flag=0的行直接保留原样。

具体代码如下:

WITH grouped_data AS (
    SELECT 
        *,
        -- 给连续相同Flag的行分配统一分组ID
        SUM(CASE WHEN Flag != LAG(Flag, 1, -1) OVER (ORDER BY Row) THEN 1 ELSE 0 END) 
        OVER (ORDER BY Row) AS group_id
    FROM your_table
    WHERE Name = 'Kyle'
)
SELECT 
    MIN(Row) AS Row,
    Name,
    Flag,
    -- Flag=1时求和并格式化为两位数,Flag=0时保留原Days
    CASE 
        WHEN Flag = 1 THEN RIGHT('0' || SUM(CAST(Days AS INT)), 2)
        ELSE Days
    END AS Days
FROM grouped_data
GROUP BY Name, Flag, group_id
ORDER BY Row;

代码说明

  • LAG(Flag, 1, -1):获取当前行的上一行Flag值,第一行默认用-1,确保首次分组能正常生成。
  • SUM(...) OVER (ORDER BY Row):累计分组标识,每次Flag变化时分组ID加1,实现连续相同Flag行的分组。
  • 聚合阶段,Flag=1的组计算Days总和后,用RIGHT('0' || ..., 2)将结果格式化为两位数;Flag=0的组直接保留原始Days值。

Excel Power Query实现思路

  1. 将数据导入Power Query,先筛选出Name为Kyle的行。
  2. 添加自定义列,用List.Accumulate函数遍历行数据,判断当前行Flag是否与上一行相同,相同则分组ID不变,不同则分组ID加1,生成连续Flag的分组标识。
  3. 按Name、Flag、分组ID分组:
    • Flag=1的组取最小Row值,计算Days总和后格式化为两位数。
    • Flag=0的组直接保留原始Row和Days值。
  4. 按Row排序后,将数据加载回Excel即可。

内容的提问来源于stack exchange,提问作者Guilherme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 22:22:42