sql oracle сумма значений в нескольких столбцах - PullRequest
1 голос
/ 06 марта 2020

я ищу решение моей проблемы.

У меня есть запрос

select em_name, sum(abs_day_left)
from pp_employees,
     pp_types_abs,
     pp_abs 
where em_id = abs_em_id and abs_abs_id = abs_id and
      abs_kod in ('12','13','14','15')  
group by em_name

Я хочу создать больше столбцов с другим номером abs_kod (вложение изображения), например

второй столбец ... abs_kod в ('656', '44', '323', '33') третий столбец ... abs_kod в ('63', '55', '565', '556') и еще .. пример таблицы спасибо за помощь и хороших выходных

Еще одна вещь ...

формула подсчитывает дни из целого месяца, как сделать так, чтобы она считалась правильно дни, когда он устанавливает параметры для полугодия, например, с 1980-01-01 по 1980-03-15

заранее спасибо bob

1 Ответ

2 голосов
/ 06 марта 2020

Я думаю, что вы ищете условное агрегирование:

select 
    em_name, 
    sum(case when abs_kod in (12,13,14,15)   then abs_day_left end) abs_day_left_1,
    sum(case when abs_kod in (656,44,323,33) then abs_day_left end) abs_day_left_2,
    sum(case when abs_kod in (63,55,565,556) then abs_day_left end) abs_day_left_3
from pp_employees
inner join pp_abs on em_id = abs_em_id 
inner join pp_types_abs on abs_abs_id = abs_id
where and abs_kod in (12,13,14,15,656,44,323,33,63,55,565,556)
group by em_name

Примечания:

  • всегда используйте явные объединения вместо старых Шул, неявные объединения - я пытался это исправить, но я не уверен, что сделал это правильно, по причине, которая заключается в следующем пункте ...

  • всегда квалифицировать столбцы в запросе таблицей, к которой они принадлежат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...