Устранение ошибок с двумя суммами - PullRequest
0 голосов
/ 11 февраля 2019

enter image description here

У меня есть таблица, она будет использоваться для карты показателей поставщика, с одиннадцатью различными полями, которым можно присвоить значение 1-5.Допустимы нулевые значения.

Мне нужно написать запрос, который будет вычислять среднее значение полей, заполненных каждой строкой.Другими словами, я мог бы разделить ВСЕГО на 11 в одном ряду и разделить ВСЕГО на 5 в другом.

Я работаю с этим запросом:

select 
cf$_vendor_no, 
cf$_party,  
cf$_environmental, 
cf$_inspections, 
cf$_invoice_process, 
cf$_ncr, 
cf$_on_time_delivery, 
cf$_qms, 
cf$_safety, 
cf$_schedule, 
cf$_scope_of_work, 
cf$_turn_times,
sum(nvl(cf$_environmental,0)
+nvl(cf$_inspections,0)
+nvl(cf$_invoice_process,0)
+nvl(cf$_ncr,0)
+nvl(cf$_on_time_delivery,0)
+nvl(cf$_qms,0)
+nvl(cf$_safety,0)
+nvl(cf$_schedule,0)
+nvl(cf$_scope_of_work,0)
+nvl(cf$_turn_times,0)) 
/
sum(
case when cf$_environmental is not null then 1 else 0 end +
case when cf$_inspections is not null then 1 else 0 end +
case when cf$_invoice_process is not null then 1 else 0 end +
case when cf$_ncr is not null then 1 else 0 end +
case when cf$_on_time_delivery is not null then 1 else 0 end +
case when cf$_qms is not null then 1 else 0 end +
case when cf$_safety is not null then 1 else 0 end +
case when cf$_schedule is not null then 1 else 0 end +
case when cf$_scope_of_work is not null then 1 else 0 end +
case when cf$_turn_times is not null then 1 else 0 end) --as "average"
from supplier_scorecard_clv  
group by cf$_vendor_no, cf$_party, cf$_environmental, cf$_inspections, cf$_invoice_process, cf$_ncr, cf$_on_time_delivery, cf$_qms, cf$_safety, cf$_schedule, cf$_scope_of_work, cf$_turn_times

И он почти работает.

Первая сумма в моем коде добавит значения в каждой строке, чтобы получить итоговое значение.Я получаю всего 25 для первой строки FARW002, 6 для второй и 12 для третьей.

Второй СУММ в моем коде также работает.Я получаю счет 6 для моей первой строки FARW002, 2 для моей второй и 3 для моей третьей.

Однако, когда я пытаюсь объединить их, как в приведенном выше фрагменте кода, я получаю "ORA-00923: Ключевое слово FROM не найдено там, где ожидается ", и я не знаю, почему.

1 Ответ

0 голосов
/ 12 февраля 2019

Итак, это глупо, но вот в чем заключается проблема:

 +nvl(cf$_turn_times,0))  
/ 
sum( 

Когда я изменил код на это - на самом деле я просто дурачился - он работал:

+nvl(cf$_turn_times,0))/sum(

Итак, проблема с разделением / и SUM отдельно от остальной части запроса - что я делаю только для того, чтобы сделать код более читабельным для меня - вызывала проблему.Спасибо, Хуан!

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