SQL 使用 group by 获取 SUM,但有条件地对两列之一的内容求和

SQL Get SUM using group by, but sum contents of one of two columns conditionally

使用SQL服务器,我需要汇总table中的记录并得到一个总和值。我的问题是我需要根据第三列中的条件对每条记录中两列之一的值求和。

示例:这是一个 table:

Station   Location  Contact ColToSum    AltColToSum ColToUse
Station 1   West    Smith      4             10        1
Station 1   West    Smith      0             10        2
Station 1   West    Smith      2             10        1
Station 1   West    Smith      7             10        1
Station 2   North   Jones      5             10        1
Station 2   North   Jones      0             10        2
Station 2   North   Jones      0             10        2
Station 3   South   Brown      5             10        1
Station 3   South   Brown      0             10        2
Station 3   South   Brown      0             10        2
Station 3   South   Brown      1             10        1

最右边的列包含需要添加到总和的列,ColToSum 或 AltColToSum。如果 ColToUse = 1,则将 ColToSum 值添加到总和;如果 ColToUse = 2,则将 AltColToSum 添加到总和中。将数据分组以获得摘要,如下所示:

Station 1   West    Smith   23
Station 2   North   Jones   25
Station 3   South   Brown   26

我一直在使用 CASE 语句和 GROUP BY 子句,但似乎得不到我想要的结果。我也尝试过使用 PARTITION,但我还不是很熟练。任何帮助将不胜感激。

只使用条件聚合:

select station, location, contact,
       sum(case when coltouse = 1 then coltosum
                when coltouse = 2 then altcoltosum
           end) as sum
from t
group by station, location, contact;