Возможно, проблема заключается в том, что сегмент кода ниже.
(SELECT TO_CHAR(IN_TIME,'HH:MI AM') AS INTIME,
TO_CHAR(OUT_TIME,'HH:MI') AS OUTTIME
FROM INV.HR_ATTENDANCES A
WHERE TO_CHAR(IN_TIME,'HH:MI')=:IN_TIME
AND TO_CHAR(OUT_TIME,'HH:MI')=:OUT_TIME)
Когда некоторый подзапрос используется как часть SELECT
столбцов, выход запроса должен быть точно 1 ряд, 1 колонку таким образом, чтобы выходной сигнал запроса может рассматриваться в качестве столбца в общем результате запроса.
Пожалуйста, проверьте следующее
- Execute выше части запроса, независимо с некоторым входом образца и убедитесь, что вы получаете ровно один ряд на выходе.
- Чтобы создать один выход колонки, возможно, придется
Либо сцепить обе колонки (например: TO_CHAR(IN_TIME,'HH:MI AM') || 'IN '|| TO_CHAR(OUT_TIME,'HH:MI') ||' OUT' AS IN_OUTTIME
)
Или
Вам нужно сделать их 2 отдельными подзапросы как часть вашего внешний запрос например: SELECT ....,(sELECT TO_CHARIN_TIME..()...FROM inv.hr_attendances..) IN_TIME, (sELECT TO_CHAR(OUT_TIME...)...FROM inv.hr_attendances..) OUTTIME from ...
в качестве альтернативы, вы можете переместить весь вспомогательный запрос для WITH
пункта или JOIN
его Основной запрос например:
WITH IN_OUT_TIME AS (
(SELECT TO_CHAR(IN_TIME,'HH:MI AM') AS INTIME,
TO_CHAR(OUT_TIME,'HH:MI') AS OUTTIME
FROM INV.HR_ATTENDANCES A
WHERE TO_CHAR(IN_TIME,'HH:MI')=:IN_TIME
AND TO_CHAR(OUT_TIME,'HH:MI')=:OUT_TIME))
SELECT (:START_DATE)|| ' TO '|| (:END_DATE) ACTIVITY_PERIOD,
EMP_NO,
DEPT,
EMP_NAME,
COUNT(*)"# OF VIOLATIONS",
IN_TIME,
OUT_TIME
FROM INV.EMP_ACTIVITY_HISTORY_SHIFTS , IN_OUT_TIME
WHERE (ATTENDANCE_DATE BETWEEN :START_DATE AND :END_DATE)
AND (TOTAL_OUT > 4
OR
MINT > (case when to_char(attendance_date,'DAY')= 'FRIDAY' then 135 else 90 end))`
Также обратите внимание на вашу группу по статье должен содержать столбцы из вашего SELECT
заявления для столбцов, полученных в качестве группы функции (например: count(*)
), за исключением. Пожалуйста, повторно обратитесь к своей группе по требованию.
Можете ли вы вставить точное сообщение об ошибке из Oracle? –
Вы не можете выбрать несколько столбцов и строк в подзапросе в отдельной части. – GurV
Gurwinder Singh, но где он это делает? – cybernetic87