作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个 View 来检查缺失的劳动力交易。该 View 将被输入到 Crystal 报表中。
在本例中, View 应采用 sysdate+30 和 sysdate -30 之间的所有日期,然后应将每个日期的在职员工的所有劳动记录进行左外连接。然后,它会给出每个日期每个员工的劳动力交易数量。
这将被传递到 Crystal Report,它将根据特定的日期范围(在 View 的 +/- 30 范围内)进行过滤。从那里开始,Crystal 中每个员工的所有天数将被汇总,并且员工将显示哪些交易为零。
在不列出每个日期的列表的情况下,最初,我对每个日期使用劳动力交易,但有些日期没有任何日期的计数。这些人显示零小时的空交易日期。这表明他们在整个期间没有任何费用,这是有道理的。
但是,当 Crystal 对这些数据进行过滤并选择一个范围时,我相信它会忽略这些空值,因此不允许我显示没有时间提交的人员的全部范围。
有没有办法在 View 中执行相当于“选择 (sysdate+30) 和 (sysdate-30) 之间的每个日期”的操作,以便我可以使用它来比较所有时间?
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
;
最佳答案
select trunc(sysdate)+31-level from dual connect by level <=61
这是生成任意值列表的好方法。
关于sql - 如何生成 sysdate-30 和 sysdate+30 之间的所有日期列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9166877/
我是一名优秀的程序员,十分优秀!