У меня есть две таблицы, которые почти точно такие же. Единственное различие заключается в том, что одна из них - это таблица архива (вызов B), в которой есть записи, удаленные из другой таблицы (вызов A)Объединение полей дат из отдельных таблиц
Мне нужно получить ВСЕ записи из заданного диапазона данных, поэтому мне нужно присоединитесь к двум таблицам (и фактически присоедините их к третьему, чтобы получить часть информации, которая не находится в этих таблицах, но это не влияет на мою проблему).
Я хотел группе час запись происходит от (т.е. trunc(<date_field>, 'hh')
Однако, так как мне нужно, чтобы получить записи из каждого часа из двух таблиц, кажется, я должен был бы произвести одно поле даты чтобы группа не имела смысла, в противном случае группа не имела бы смысла: каждая запись будет иметь только дату из одного поля, поэтому, если я буду группировать по дате в таблице, это по сути не учитывает записи от другого, и если я буду группировать оба не возвращайте данные, поскольку в обеих таблицах не появляется запись.
Итак, я хочу добавить две «даты» и заставить ее работать так, как в Excel (т.е. даты будут рассматриваться как их числовой эквивалент, get добавленной , и возвращается итоговая дата, которая, кстати, является по крайней мере одним случаем, когда добавление дат действительно, despite this thread's opinion otherwise)
Это имеет еще больший смысл, поскольку я буду заменять нулевое значение даты на 0, поэтому он должен функционировать как добавление числа к дате (12/31/14 + 1 = 1/1/15).
Я просто не смог заставить его работать. Я пытался несколько итераций, чтобы получить расчет для работы последних из которых:
SELECT DISTINCT Avg(NVL(to_number(to_char(trunc(fcr.actual_start_date, 'hh')))*86400, 0) + NVL(to_Number(to_char(trunc(acr.actual_start_date, 'hh')))*86400, 0)) Start_Num, SUM(AA.SESSIONCPU) TotalCPU, Count(1) Cnt
, SUM((NVL(to_number(to_char(trunc(fcr.actual_completion_date, 'hh')))*86400, 0) + NVL(to_Number(to_char(trunc(acr.actual_completion_date, 'hh')))*86400, 0)
- NVL(to_number(to_char(trunc(fcr.actual_start_date, 'hh')))*86400, 0) - NVL(to_Number(to_char(trunc(acr.actual_start_date, 'hh')))*86400, 0))) TotRun
FROM PSTAT.A$_A AA
LEFT OUTER JOIN APPL.FND_CR FCR On FCR.O_SES_ID = AA.SEsID
LEFT OUTER Join XX.E_FND_CR ACR on ACR.O_SES_ID = aa.sesid
WHERE (trunc(fcr.actual_start_date) >= to_date('28-Dec-2014', 'DD-MON-YYYY')
Or trunc(acr.actual_start_date) >= to_date('28-Dec-2014', 'DD-MON-YYYY'))
AND rownum <= 1048500
and (acr.status_code = 'C' or fcr.status_Code = 'C')
AND aa.sessioncpu is not null
GROUP BY to_number(NVL(trunc(fcr.actual_start_date, 'hh'), 0))*86400 + to_Number(NVL(trunc(acr.actual_start_date, 0), 'hh'))*86400
ORDER BY 2, 1;
Моя явная проблема с выше кодой является то, что жаба продолжает игнорировать слепки и говорит, что он ожидает значение даты, когда он получает номер (подсвечивается 0). Так что если кто-то мог:
А) Подскажите, почему жаба будет игнорировать слепки (он должен видеть номер и поэтому не должны иметь абсолютно никакого ожидания даты)
B) Предоставлять какие-либо предложения о том, как получить дополнение к работе или неудача, предлагающие альтернативный маршрут для объединения трех таблиц, чтобы я мог группировать значения даты начала.
Как всегда, любая помощь очень ценится.
Nitpicking: это не «TOAD», который ожидает чего-либо или дает ошибку. Это база данных Oracle. Любой другой клиент SQL даст вам ту же ошибку. Btw: 'to_number (to_char (trunc (fcr.actual_start_date, 'hh')))' можно сократить до: 'extract (hour from fcr.actual_start_date) ' –
' Мне нужно получить ВСЕ записи из заданного диапазона данных, поэтому мне нужно присоединиться к двум таблицам' - вам не нужно присоединяться к ним. Они не пересекаются, поэтому вы можете использовать 'UNION ALL'. –