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

SQL Server中基于commission列生成commission2列的实现需求

在SQL Server中生成commission2列的解决方案

实现思路

结合CountCustomer字段和同一客户下的commission分布情况,通过窗口函数获取分组内的数值极值判断场景,再用CASE语句匹配规则计算目标列。

完整SQL代码

假设你的表名为customer_commission,客户唯一标识字段为customer_id(用于关联同一客户的不同品牌记录),代码如下:

SELECT
    customer_id,
    CountCustomer,
    commission,
    CASE
        -- 规则1:CountCustomer = 1的场景
        WHEN CountCustomer = 1 THEN
            CASE WHEN commission <= 0 THEN 0 ELSE commission END
        -- 规则2:CountCustomer = 2的场景
        WHEN CountCustomer = 2 THEN
            CASE
                -- 两个commission都<0 → 置为0
                WHEN MAX(commission) OVER (PARTITION BY customer_id) < 0 THEN 0
                -- 两个commission都>0 → 保留原数值
                WHEN MIN(commission) OVER (PARTITION BY customer_id) > 0 THEN commission
                -- 一正一负 → 两行均取分组内的正数值(若需转为各自绝对值,可替换为ABS(commission))
                ELSE MAX(commission) OVER (PARTITION BY customer_id)
            END
    END AS commission2
FROM customer_commission;

代码说明

  1. 窗口函数作用:MAX(commission) OVER (PARTITION BY customer_id)和MIN(commission) OVER (PARTITION BY customer_id)用于快速判断同一客户下的commission分布:
    • 最大值<0 → 所有值为负
    • 最小值>0 → 所有值为正
    • 其余情况 → 存在正负两种值
  2. 分支匹配规则:
    • CountCustomer=1时,直接根据当前行commission值判断是否置0
    • CountCustomer=2时,通过分组极值匹配对应场景,执行规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:22:45