如何在SQL中按账户分类基于求和条件新增还款状态列?
实现还款完成状态列的SQL方案
根据你给出的需求和期望结果,我们可以通过窗口函数来实现这个需求,具体思路是按账户分组计算总已还款额,再和该账户的应还款金额(同一账户金额一致)对比,生成状态列。
完整SQL语句
假设你的表名为your_table,替换成实际表名即可:
SELECT ID, 账户, 金额, 已还款额, CASE WHEN SUM(已还款额) OVER (PARTITION BY 账户) = MAX(金额) OVER (PARTITION BY 账户) THEN 'YES' ELSE 'NO' END AS 还款完成状态 FROM your_table;
代码解释
SUM(已还款额) OVER (PARTITION BY 账户):计算每个账户的总已还款额,窗口函数PARTITION BY 账户表示按账户分组计算。MAX(金额) OVER (PARTITION BY 账户):取每个账户的金额(因同一账户金额一致,用MAX/MIN/AVG都可以)。CASE表达式:判断总已还款额是否等于账户的应还款金额,相等则返回YES,否则返回NO,并将该列命名为还款完成状态。
如果你实际需求是总已还款额等于该账户所有金额的总和(与当前期望结果不符),可以将MAX(金额)替换为SUM(金额):
SELECT ID, 账户, 金额, 已还款额, CASE WHEN SUM(已还款额) OVER (PARTITION BY 账户) = SUM(金额) OVER (PARTITION BY 账户) THEN 'YES' ELSE 'NO' END AS 还款完成状态 FROM your_table;
内容的提问来源于stack exchange,提问作者DevPerson
相关产品推荐
相关产品推荐

