我正在尝试计算下表中给出的Life Premium。我想仅计算产品类别如“Life%”的行的总和,但是将其应用于我们为策略出现“Life”产品的所有行,以及其他每个策略(即那些不是'生命'产品应该是0)
我尝试了总和(成本)超过(产品子类别),但它给出了所有策略的值,即使是那些没有生命产品的策略。遗憾的是,partition by子句不允许使用Where子句。
有人可以帮忙吗?
答案 0 :(得分:0)
您可以这样做:
select t.*,
sum(case when productsubcategory like 'Life%' then cost else 0 end) over
(partition by policy) as lifepremium
from t;
答案 1 :(得分:0)
使用Case When
检查: -
Select a.*, case when a.policy=b.policy then Life_Premium else 0 end as Life_Premium
from
table a
left join
(
select policy,sum(cost) as Life_Premium from TableA where product_sub_category LIKE 'Life%'
group by policy
) b
on a.policy=b.policy;
如果您有任何问题,请告诉我