Случай, когда вместе с суммой - PullRequest
0 голосов
/ 31 октября 2018

Существует дополнительный плательщик, который называется «Работник комп», и я пытаюсь сделать его «Работником комп / пассив», выполняя заявление «когда дело». Я пытаюсь вернуть одну строку строки. Ваша помощь будет по достоинству оценена.

Вот мой запрос:

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 ]

0 голосов
/ 31 октября 2018

Это будет более простая форма вашего запроса:

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 делают одно и то же. Нужен только один.

0 голосов
/ 31 октября 2018

Я бы повторил то же выражение 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.

...