Случай, когда вместе с суммой
Существует дополнительный плательщик, который называется "Работник комп", и я пытаюсь сделать его "Работником комп / пассив", выполняя заявление "когда дело". Я пытаюсь вернуть одну строку строки. Ваша помощь будет по достоинству оценена.
Вот мой запрос:
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
2 ответа
Решение
Я бы повторил то же самое CASE
выражение с GROUP BY
пункт:
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
выражение делают то же самое. Нужен только один.