如何在同一SQL查询中同时计算BASE与Top 2 Box聚合值?
合并两个SQL查询,同时计算BASE和Top 2 Box聚合值
你可以用条件聚合的方式实现需求,只需要一次查询就能同时算出两个聚合值,核心是在SUM函数里嵌套CASE WHEN来区分两种统计逻辑:
select bF.MetricSubGroup_Level1, bF.MetricDisplayName, SUM(fDT.Weight) AS BASE, SUM(CASE WHEN fDT.AnsCode IN (9,10) THEN fDT.Weight ELSE 0 END) AS [Top 2 Box] from #factDataTemp fDT left join #brandFOM bF on fDT.BrandID = bF.OptionId where fDT.BrandID != 0 and bF.StudyName is not NULL Group by bF.MetricSubGroup_Level1, bF.MetricDisplayName
逻辑说明
BASE的计算和原query1完全一致:对所有符合WHERE过滤条件的Weight求和。Top 2 Box通过CASE WHEN做条件筛选:仅当fDT.AnsCode属于(9,10)时,才将对应Weight纳入求和,不满足条件的记录贡献0,最终SUM的结果就是符合要求的聚合值。- 这种方式只需要执行一次分组查询,比分开两次查询更高效,且结果会在同一行展示对应分组的两个指标。
内容的提问来源于stack exchange,提问作者Santosh Sharma
相关产品推荐
相关产品推荐

