Изменить оператор выбора для суммирования одного поля - PullRequest
0 голосов
/ 23 января 2019

У меня есть оператор выбора select, который извлек все необходимые мне данные, но я пытаюсь изменить его так, чтобы REJECTS by SHIFT и PROD_DATE суммировались.

SELECT B.PROD_DATE,B.SHIFT,B.REJECTS
FROM REJECTS B 
LEFT OUTER JOIN HIST_ILLUM_PART C ON B.HIST_ILLUM_PART_ID = C.ID
LEFT OUTER JOIN HIST_ILLUM_RT A ON A.ID = C.HIST_ILLUM_RT_ID
WHERE
B. REJECT_CODE NOT in ('START','SETUP','QC')
AND B.PROD_DATE >= SYSDATE - 8
ORDER BY SHIFT, PROD_DATE

Я пытался

   SELECT B.PROD_DATE,B.SHIFT,SUM(B.REJECTS)

Я получаю следующую ошибку: ORA-00937: нет функции для одной группы

Нужен ли подзапрос?

1 Ответ

0 голосов
/ 23 января 2019

Добавьте предложение GROUP BY к вашему запросу при выполнении агрегации. В псевдокоде это означает, что для каждой отдельной группы B.PROD_DATE и B.SHIFT получают сумму всех B.REJECTS для этого набора,

SELECT B.PROD_DATE,B.SHIFT,SUM(B.REJECTS) AS REJECTS
FROM REJECTS B 
LEFT OUTER JOIN HIST_ILLUM_PART C ON B.HIST_ILLUM_PART_ID = C.ID
LEFT OUTER JOIN HIST_ILLUM_RT A ON A.ID = C.HIST_ILLUM_RT_ID
WHERE
B. REJECT_CODE NOT in ('START','SETUP','QC')
AND B.PROD_DATE >= SYSDATE - 8
GROUP BY B.PROD_DATE,B.SHIFT
ORDER BY SHIFT, PROD_DATE
...