首先,我不是sql中的专家。这就是为什么寻求帮助。 我有一个oracle视图,其中包含员工考勤记录,包括迟到出勤日。 列:标记前两个原始值在一个组中的值
员工编号,日期,及时,门诊时间,Late_Arrival(如果晚了目前越来越被标记为“1”)
我想标记每个员工拳头一个月两次晚来港定居人士“G”。来自查询。
请帮我这个。
SELECT l.EMP_NO,l.ACCOUNT_DATE,l.IN_TIME,l.OUT_TIME,l.LATE_COMING_15 as
late_arrival,
(case when l.LATE_COMING_15 = 1 and
row_number() over (partition by trunc(l.ACCOUNT_DATE),l.LATE_COMING_15
order by l.IN_TIME
) <= 2
then 'G'
end) as flag
from LATE_EARLYDEP l
WHERE trunc(l.ACCOUNT_DATE) >= to_date('&DATE_FROM','dd/MM/yy') AND
trunc(l.ACCOUNT_DATE) <=to_date ('&DATE_TO','dd/MM/yy')
order by 1,2`
但我仍然没有得到所需的结果。作为一个例子,员工编号为0005的flaged天应该是02/03/2017 & 06/03/2017。我已经上传结果低于谷歌驱动器链接
结果https://drive.google.com/open?id=0B6Xw1eXeLyG7M3dtbmJUek5OdG8
还没标记所需的结果。看到下面的谷歌驱动器结果。非常感谢。 https://drive.google.com/open?id=0B6Xw1eXeLyG7MkJPd2lTamRVa2M –
@KavinduAnthony。 。 。我认为这个问题只是'partition by'中缺少'emp_no'。 –