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

SQL Server对比两列值打标后按维度汇总求和方法

解决方案

你已完成的大小对比打标逻辑可以直接复用,核心要解决的是跨两列的同维度聚合问题,不需要复杂的逐行判断,用纵向拆分再聚合的方式就能实现:

  • 现有CTE返回的结果中,每一行同时包含两组映射关系:COL_LEFT的取值对应RESULT_LEFT标记、COL_RIGHT的取值对应RESULT_RIGHT标记,宽表结构无法直接对两列的取值做统一聚合
  • 用UNION ALL把两组映射拆成结构完全一致的纵向数据集,统一成「列值、对应标记」两列结构
  • 对拆分后的数据集按列值分组,求和对应标记就能得到每个取值的总计数,可直接生成结果表RESULT_TABLE
完整SQL代码
WITH Tbl AS
(
    SELECT
        a.*,
        CASE 
            WHEN PRICE_LEFT > PRICE_RIGHT 
                THEN 1 
                ELSE 0 
        END AS RESULT_LEFT,
        CASE 
            WHEN PRICE_RIGHT > PRICE_LEFT 
                THEN 1 
                ELSE 0 
        END AS RESULT_RIGHT
    FROM 
        SUMS_BY_VALUE a
),
UnifiedData AS
(
    -- 提取左列与对应标记
    SELECT COL_LEFT AS COL_VALUE, RESULT_LEFT AS MARK FROM Tbl
    UNION ALL
    -- 提取右列与对应标记
    SELECT COL_RIGHT AS COL_VALUE, RESULT_RIGHT AS MARK FROM Tbl
)
-- 汇总结果写入RESULT_TABLE,不需要建表可删除INTO子句
SELECT
    COL_VALUE,
    SUM(MARK) AS TOTAL_MARK
INTO RESULT_TABLE
FROM UnifiedData
GROUP BY COL_VALUE
ORDER BY COL_VALUE;
说明
  • 相等的价格判断逻辑保留了你原有写法:两边价格相等时两个标记都赋值为0,符合你最初的CASE规则
  • 代码完全兼容SQL Server LocalDB语法,用提供的测试数据可直接运行得到和示例一致的结果
  • 如果需要额外返回原始明细行,只需要在最后一步关联Tbl和聚合结果即可,不需要修改核心聚合逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:45:43