与 sum 一起时的情况
Case when along with sum
有一个名为 workers comp 的额外付款人,我正在尝试通过 case when 语句将其作为 Workers Comp/Liability。我正在尝试 return 一行一行。非常感谢您的帮助。
这是我的查询:
select distinct
case when payer.class like 'Workers%'
then 'Workers Comp/Liability'
else Payer.class
end as Payer,
sum(Payment.payment_at) AS SumOfPmt
from Payer inner join Payer.payerid = Payment.payerid
where payer.class like 'Workers%'
Group By payer.class
结果:
Payer | SumOfPmt
Workers Comp/Liability | 558.76
Workers Comp/Liability | 167036.41
我想要的:
Payer | SumOfPmt
Workers Comp/Liability | 167595.17
我会用 GROUP BY
子句重复相同的 CASE
表达式:
select (case when p.class like 'Workers%'
then 'Workers Comp/Liability'
else p.class
end) as Payer,
sum(pay.payment_at) AS SumOfPmt
from Payer p inner join
Payment py
on p.payerid = py.payerid
where p.class like 'Workers%'
group by (case when p.class like 'Workers%'
then 'Workers Comp/Liability'
else p.class
end);
您不需要使用 DISTINCT
,因为它有 GROUP BY
。
这将是您查询的一种更简单的形式:
select 'Workers Comp/Liability' as Payer,
sum(pm.payment_at) AS SumOfPmt
from Payer py inner join
Payment pm
on py.payerid = pm.payerid
where py.class like 'Workers%';
您的 WHERE
子句和 CASE
表达式做同样的事情。只需要一个。
有一个名为 workers comp 的额外付款人,我正在尝试通过 case when 语句将其作为 Workers Comp/Liability。我正在尝试 return 一行一行。非常感谢您的帮助。
这是我的查询:
select distinct
case when payer.class like 'Workers%'
then 'Workers Comp/Liability'
else Payer.class
end as Payer,
sum(Payment.payment_at) AS SumOfPmt
from Payer inner join Payer.payerid = Payment.payerid
where payer.class like 'Workers%'
Group By payer.class
结果:
Payer | SumOfPmt
Workers Comp/Liability | 558.76
Workers Comp/Liability | 167036.41
我想要的:
Payer | SumOfPmt
Workers Comp/Liability | 167595.17
我会用 GROUP BY
子句重复相同的 CASE
表达式:
select (case when p.class like 'Workers%'
then 'Workers Comp/Liability'
else p.class
end) as Payer,
sum(pay.payment_at) AS SumOfPmt
from Payer p inner join
Payment py
on p.payerid = py.payerid
where p.class like 'Workers%'
group by (case when p.class like 'Workers%'
then 'Workers Comp/Liability'
else p.class
end);
您不需要使用 DISTINCT
,因为它有 GROUP BY
。
这将是您查询的一种更简单的形式:
select 'Workers Comp/Liability' as Payer,
sum(pm.payment_at) AS SumOfPmt
from Payer py inner join
Payment pm
on py.payerid = pm.payerid
where py.class like 'Workers%';
您的 WHERE
子句和 CASE
表达式做同样的事情。只需要一个。