У меня есть приложение ApEx для отслеживания рабочего времени. У меня есть мнение, что выглядит следующим образом:С учетом даты выберите все номера недель в этом месяце
CREATE OR REPLACE VIEW HOURSDAYS
AS SELECT
(MAX("TO_X") - MIN("FROM_X"))*24 -
(max(case when PROJECT_ID = 999 then to_x else to_date('01012000','DDMMYYYY') end) -
max(case when PROJECT_ID = 999 then from_x else to_date('01012000','DDMMYYYY') end))*24 AS TIME_SPENT,
DAY,
PERSON_ID
FROM ATTENDANCE_HOURS
GROUP BY PERSON_ID, DAY
ORDER BY DAY DESC
мне нужна сумма часов в неделю. Так что у меня есть это:
SELECT TO_CHAR(DAY,'IW'), MIN(DAY), MAX(DAY), SUM(TIME_SPENT)
FROM HOURSDAYS
WHERE PERSON_ID = (SELECT ID FROM ATTENDANCE_PEOPLE WHERE MAIL_SSO = V('APP_USER') AND ROLE = 0) AND
EXTRACT (YEAR FROM DAY) = EXTRACT (YEAR FROM TO_DATE(:P100_DATE_PICKER,'DD-MON-RR'))
GROUP BY TO_CHAR(DAY,'IW')
ORDER BY TO_CHAR(DAY,'IW') ASC
А теперь начинается самое интересное: у меня есть страница пункта P100_DATE_PICKER и мне нужно, чтобы отобразить только те недели, которые имеют> 0 дней, которые принадлежат к месяцу, к которому принадлежит этот день Я выбранный с помощью выбора даты. Например, для 1.1.2015 я хочу показать только недели 1, 2, 3, 4, 5. 243.2015: 9, 10, 11, 12, 13, 14.
Если кто-то заинтересован в том, зачем мне это делать, то для проверки - количество рабочих часов в неделю не может превышать 20/32, зависит от какой у вас контракт.
Я не уверен, что вы имеете в виду под этим: '24.3.2015: 9, 10, 11, 12, 13, 14. «В марте пять воскресений и пять понедельников, так почему бы вы показать шесть недель? –
@DavidFaber Неделя 9 с 2015-02-23 по 2015-03-01, так частично в марте. 14-я неделя с 2015-03-30 по 2015-04-05, так и частично в марте. Требование (как я понимаю) состоит в том, чтобы показать все недели частично или полностью в течение желаемого месяца и показать все данные за эти недели. Таким образом, в марте данные показывают от 2015-02-23 до 2015-04-05, сгруппированных этими 6 неделями. –