2015-10-19 3 views
1

У меня работает отчет о зарплате, но у меня возникают проблемы с запросом и возвратом результатов, которые мне нужны. В докладе, есть два столбца, и таблица выглядит следующим образом:Postgres Значения Ассигнования в той же колонке

Date | Costs 
2014 | 100000 
2015 | 150000 

Однако хитрость заключается в том, что есть два вида сотрудников, чьи расходы будут добавлены в колонку Затраты. Один вид сотрудника - «нормальный», а номера его сотрудников следуют шаблону «E00 ...», например «E001, E002, E003 и т. Д.

Второй вид - менеджер. Их номера сотрудников похожи на« E99 .. » . ", поэтому" E990, E991 и т. д.

Для запроса и возврата данных для столбца Costs в настоящее время я возвращаю 100% затрат сотрудника на мой запрос. Тем не менее, я хотел бы запросить и вернуть 50% сотрудников E00-типа для добавления в столбец «Стоимость» и вернуть 12,5% сотрудников E99-типа для добавления в столбец затрат.

Таким образом, столбец «Стоимость» будет состоять из добавления 50% сотрудников «Стоимость E00» и от добавления 12,5% от стоимости сотрудников E99.

Ниже мой запрос, но я не могу получить его, чтобы вернуть все:

select 
to_char("Date", 'YYYY') as "Date", 
case 
    when "Type" in ('E001', 'E002', 'E003', 'E004') then 0.5 * sum ("Amount")  filter (where "Type" in ('E001', 'E002', 'E003', 'E004')) 
    when "Type" like 'E9%' then 0.125 * sum("Amount") filter (where "Type" like 'E9%') 
end as "Costs" 
from "Transactions" 
group by 1 
order by min("Date"); 

ответ

1

Почему не что-то подобное?

SELECT mydate, 
     SUM(mysum) 
FROM (
     (SELECT to_char("Date", 'YYYY') AS mydate, 
              0.5 * SUM("Amount") AS mysum 
     FROM "Transactions" 
     WHERE TYPE LIKE 'E00%' 
     GROUP BY 1) 
     UNION ALL 
     (SELECT to_char("Date", 'YYYY') AS mydate, 
              0.125 * SUM("Amount") 
     FROM "Transactions" 
     WHERE TYPE LIKE 'E9%' 
     GROUP BY 1)) s1 
GROUP BY mydate 
ORDER BY mydate; 
+0

Если моя таблица является «Сделкой», где я могу поставить от «Сделок? – Piechartking

+0

@Piechartking К сожалению, забыл ЕК. Исправлен. – Alexandros

+1

Да. Прекрасно работает! Спасибо! – Piechartking

Смежные вопросы