[英]How to sum a certain column based on other columns values
我有一个包含多个 work_weeks、product_names 和 event_names 的表。 下面是一个例子:
work_week product_name event_name num_products attributeA attributeB
2021-17 A Event1 25 Y X
2021-17 A Event1 20 Y Z
2021-17 A Event1 15 N Y
我正在尝试在此表上执行“分组依据”,因此我可以获得按 work_week、product_name 和 event_name 分组的 num_products 的总和。 但是,在我的 'group by' 表中,我需要 sum(num_products) 的多个版本,具体取决于 attributeA 和 attributeB 的值。 像这样的东西:
work_week product_name event_name sum_when_A = N sum_when_A = Y and B = Z
2021-17 A Event1 15 20
关于如何执行此操作的任何想法?
只需使用条件聚合:
select work_week, product_name, event_name,
sum(case when attributeA = 'N' then num_products else 0 end) as sum_n,
sum(case when attributeA = 'Y' and attributeB = 'Z' then num_products else 0 end) as num_yz
from t
group by work_week, product_name, event_name;
使用条件聚合
select work_week, product_name, event_name
, sum(iif(attributeA = 'N', num_products, 0))
, sum(iif(attributeA = 'Y' and attributeB = 'Z', num_products, 0))
from myTable
group by work_week, product_name, event_name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.