在Oracle中仅使用滞后检查天数差异
我需要一点帮助,但我非常接近实现我所期待的感谢。然而,这并不完全是我所需要的输出在Oracle中仅使用滞后检查天数差异,oracle,Oracle,我需要一点帮助,但我非常接近实现我所期待的感谢。然而,这并不完全是我所需要的输出 使用滞后来检查日期的差异,我需要滞后来忽略时间上的差异,只考虑日期。换句话说,它应该只考虑日历日,而不是24小时。有没有办法做到这一点 以下是我目前得到的信息: SELECT EMPLOYEE_ID, SUM(DIFFERENCE) AS DAYS, DATE_IN, DATE_OUT FROM ( SELECT * FROM ( SELECT EMPLOYEE_ID,
使用滞后来检查日期的差异,我需要滞后来忽略时间上的差异,只考虑日期。换句话说,它应该只考虑日历日,而不是24小时。有没有办法做到这一点
以下是我目前得到的信息:SELECT EMPLOYEE_ID,
SUM(DIFFERENCE) AS DAYS,
DATE_IN,
DATE_OUT
FROM (
SELECT *
FROM (
SELECT EMPLOYEE_ID, DATE_IN, DATE_OUT, ACTIVE,
NVL(DATE_IN - LAG(DATE_IN) OVER (PARTITION BY EMPLOYEE_ID, ACTIVE ORDER BY DATE_IN), 1) AS DIFFERENCE
FROM MY_TABLE
WHERE MY_TABLE.ACTIVE = 1
AND TO_CHAR(DATE_IN, 'YYYY-MM-DD') >= 'user-selected date'
AND TO_CHAR(DATE_OUT, 'YYYY-MM-DD') <= 'other user-selected date'
)
)
GROUP BY EMPLOYEE_ID, DATE_IN, DATE_OUT
ORDER BY DATE_IN
我要找的是:
这里的差异应该都是1,时间应该被忽略。我试着在延迟中使用CHAR(DATE_IN…)来去除时间部分,但当然这不起作用:p
谢谢你的帮助。为了谷歌人:
TRUNC(DATE_IN) - LAG(TRUNC(DATE_IN)
关键是忽略时间,只在几天内得到结果
感谢一匹没有名字的马给出了答案,并在此过程中教了我关于TRUNC的知识:)@a\u horse\u with\u no\u name如此简单,正是我想要的。。。非常感谢。
TRUNC(DATE_IN) - LAG(TRUNC(DATE_IN)