Цель и что я получил до сих пор
Я пытаюсь создать представление, которое проверяет пропущенные трудовые транзакции.Представление будет передано в отчет Crystal.
В этом случае представление должно принимать все даты между sysdate + 30 и sysdate -30, а затем должно оставлять внешнее объединение всех трудовых записей активных сотрудников для каждого изэти даты.Затем он подсчитывает количество трудовых транзакций для каждого сотрудника на каждую дату.
Он передается в отчет Crystal Report, который будет фильтроваться на основе определенного диапазона дат (в диапазоне +/- 30вид).Отсюда будет подсчитываться количество дней за каждого сотрудника в Crystal, и будут отображаться сотрудники с нулевыми транзакциями.
Проблема
Не выдавая список каждой даты, изначальноЯ использую трудовую транзакцию для каждой даты, но некоторые не имеют значения для любой даты.Эти люди показывают нулевые даты транзакции с нулевыми часами.Это указывает на то, что они не взимают плату за весь период, что имеет смысл.
Однако, когда Crystal выполняет фильтрацию этих данных и выбирает диапазон, я полагаю, что он пропускает эти нулевые значения, что не позволяет мнепоказать весь спектр людей, у которых нет времени.
Вопрос
Есть ли способ сделать эквивалент "выбрать каждую дату между (sysdate + 30) и (sysdate-30) "в представлении, чтобы я мог использовать его для сравнения все время с?
SQL (для справки)
SELECT QUERY.LABORRECLABORCODE
, QUERY.LABORRECEMPLOYEENUM
, QUERY.PERSONRECDISPLAYNAME
, QUERY.TRANSSTARTDATE
, COUNT(TRANSROWSTAMP) AS ROWCOUNT
FROM (SELECT *
FROM (SELECT LABOR.LABORCODE AS LABORRECLABORCODE
, LABOR.LA20 AS LABORRECEMPLOYEENUM
, PERSON.DISPLAYNAME AS PERSONRECDISPLAYNAME
FROM LABOR
LEFT OUTER JOIN PERSON
ON ( LABOR.LABORCODE = PERSON.PERSONID )
WHERE LABOR.STATUS = 'ACTIVE'
AND LABOR.LA20 IS NOT NULL
AND PERSON.DISPLAYNAME IS NOT NULL
AND LOWER(PERSON.DISPLAYNAME) NOT LIKE '%kimball%'
AND LOWER(PERSON.DISPLAYNAME) NOT LIKE '%electrico%'
AND LOWER(PERSON.DISPLAYNAME) NOT LIKE '%misc labor cost adj%'
AND LOWER(PERSON.DISPLAYNAME) NOT LIKE '%brossoit%'
AND LOWER(PERSON.DISPLAYNAME) NOT LIKE '%brossiot%')PERSONINFO
LEFT OUTER JOIN (SELECT STARTDATE AS TRANSSTARTDATE
, LABORCODE AS TRANSLABORCODE
, ROWSTAMP AS TRANSROWSTAMP
FROM LABTRANS
WHERE STARTDATE BETWEEN ( SYSDATE - 30 ) AND ( SYSDATE + 30 ))LABTRANSLIMITED
ON ( PERSONINFO.LABORRECLABORCODE = LABTRANSLIMITED.TRANSLABORCODE ))QUERY
GROUP BY LABORRECLABORCODE
, TRANSSTARTDATE
, LABORRECEMPLOYEENUM
, PERSONRECDISPLAYNAME
ORDER BY LABORRECLABORCODE
, TRANSSTARTDATE
;