У меня есть следующий запрос, который отображает сумму сотрудников в определенной группе (A1, B1..etc) и в отделе specialc.Oracle Sql Query для возврата строки, когда нет данных
Проблема заключается в отсутствии данных для определенного отдела в определенную дату, тогда эта строка с именем отдела вообще не отображается, и я хочу, чтобы запрос отображал все имена строк/отделов, даже если они имеют данные в нем или нет. Он должен отображать «0» в таком случае.
SELECT NVL(TO_CHAR(COALESCE(dept_name,'NA')),'TOTAL') AS Department,
SUM (
CASE
WHEN (emp_group IN('ABC','CDE','EFG','GHI'))
THEN 1
ELSE 0
END) AS A1,
SUM(
CASE
WHEN (emp_group IN ('XYZ'))
THEN 1
ELSE 0
END) AS B1,
SUM (
CASE
WHEN (emp_group IN ('ABC','CDE','EFG','GHI','XYZ'))
THEN 1
ELSE 0
END) AS TOTAL
FROM emp e
WHERE
dept_name IN('IT','FI','ACC')
AND e.transaction_date = trunc(sysdate)
GROUP BY rollup(COALESCE(dept_name,'NA'))
Заранее спасибо
Возможно, вам следует прочитать о внешних соединениях. – beerbajay
Левые соединения работают только при наличии доступной таблицы. Есть ли таблица отделов? Есть ли внешний ключ от emp до отдела? –
Нет, есть только 1 таблица, и это «emp». – Akshay