美文网首页
MSSQL 連續出勤(二)

MSSQL 連續出勤(二)

作者: dlj_li | 来源:发表于2020-09-18 10:02 被阅读0次

接著上次的,那個查詢最近連續出勤天數:取最大的day_cha

select a.* from (select t2.empno, t2.month,abs(t2.day_cha) day_cha,

count(t2.day_cha) days

from

(select t.empno,t.emptype,t.deptcode,t.attdate,left(t.attdate,6) as month ,t.OnTime,t.date_rank,day(t.OnTime)-t.date_rank as day_cha

from (

    select A.emptype,A.empno,A.deptcode,A.attdate,A.OnTime,A.ShiftTime,row_number() over(partition by A.empno order by A.OnTime) date_rank

from

   TB1 A,TB2 B where A.empno=B.Emplid and B.Udate=convert(nvarchar(11),getdate()-1,112)and 

ontime is not null and ShiftTime is not null)t

) t2 group by empno,day_cha,month ) as a where day_cha = (select max(tt.day_cha) from (select t2.empno, t2.month,abs(t2.day_cha) day_cha,

count(t2.day_cha) days

from

(select t.emptype, t.empno,t.deptcode,t.attdate,left(t.attdate,6) as month ,t.OnTime,t.date_rank,day(t.OnTime)-t.date_rank as day_cha

from (

    select A.emptype,A.empno,A.deptcode,A.attdate,A.OnTime,A.ShiftTime,row_number() over(partition by A.empno order by A.OnTime) date_rank

from

    TB1 A,TB2 B where A.empno=B.Emplid and B.Udate=convert(nvarchar(11),getdate(),112)  and 

ontime is not null and ShiftTime is not null)t

) t2 group by empno,day_cha,month )tt where a.empno=empno)

1

如圖一所示:能看到查詢的是在崗的所有人的最後一次連續的出勤天數,但是通過取day_cha有弊端

2

在一個月初的day_cha比當月都大,導致多月數據取比對,得到的不是最近一次:所有最好取當月的,但是在換月的時候又有問題:

select a.* from (select t2.empno, t2.month,abs(t2.day_cha) day_cha,

count(t2.day_cha) days

from

(select t.empno,t.emptype,t.deptcode,t.attdate,left(t.attdate,6) as month ,t.OnTime,t.date_rank,day(t.OnTime)-t.date_rank as day_cha

from (

    select A.emptype,A.empno,A.deptcode,A.attdate,A.OnTime,A.ShiftTime,row_number() over(partition by A.empno order by A.OnTime) date_rank

from

    TB1 A,TB2 B where A.empno=B.Emplid and B.Udate=convert(nvarchar(11),getdate()-1,112)and 

ontime is not null and ShiftTime is not null and datediff(month,A.ShiftTime,getdate())=0)t

) t2 group by empno,day_cha,month ) as a where day_cha = (select max(tt.day_cha) from (select t2.empno, t2.month,abs(t2.day_cha) day_cha,

count(t2.day_cha) days

from

(select t.emptype, t.empno,t.deptcode,t.attdate,left(t.attdate,6) as month ,t.OnTime,t.date_rank,day(t.OnTime)-t.date_rank as day_cha

from (

    select A.emptype,A.empno,A.deptcode,A.attdate,A.OnTime,A.ShiftTime,row_number() over(partition by A.empno order by A.OnTime) date_rank

from

   TB1 A,TB2 B where A.empno=B.Emplid and B.Udate=convert(nvarchar(11),getdate(),112)  and 

ontime is not null and ShiftTime is not null and  datediff(month,A.ShiftTime,getdate())=0)t

) t2 group by empno,day_cha,month )tt where a.empno=empno)

相关文章

  • MSSQL 連續出勤(二)

    接著上次的,那個查詢最近連續出勤天數:取最大的day_cha select a.* from (select t...

  • MSSQL 處理連續出勤天數

    Empno(工號),attdate(出勤日期),OnTime(打卡時間),ShiftTime(排班時間),rank...

  • 連續

    正在熱播的宮廷劇一共有七十多集一路演下來越演越不像话了勾心鬥角爾虞我詐血案連連 再這麼發展下去這世界還能好麼 為避...

  • 『書法文札』| 一碟淺墨化濃情 —— 『情迷鄧麗君』摄影記事 (

    情 · 迷 …… 最近,連續更新了多篇 [連載] 『情迷鄧麗君 _淡淡幽情』,這也是自己在簡書連續更新最給力的一個...

  • 2019.11.14 2019年篮球賽

    今年時間凑巧,順利連續參加了連續三週的小篮球比賽小組賽,贏一敗二,未晋级下埸,有几點小心得。 1. 小腿被撞傷后,...

  • 我的30天挑戰之一

    這個禮拜二與高中同學見面,聊到了她最近帶挑戰連續30天做手作的這件事,然後問我有沒有什麼是是我連續做30天的。我回...

  • 【文】日记20190122

    今天第二次連續看兩場電影,真的是「連續」,本來看完一部想走了,搭扶梯下樓的時候臨時決定還是把另外一部看完,一邊跑回...

  • 狀態

    今天週末,按照今年的課程安排接下來的八周都連續有課,也就是意味著接下來的八周都不能夠專心連續的休假,所以昨...

  • 是枝裕和‖在他的电影里你能看到生活本身。

    采访实录 三谷幸喜:「是枝先生,你在連續劇的製作過程裡,把想做的事都做了吧?我在連續劇中,想做的事一件也沒做過,電...

  • 2020.06.28 連續打球6週

    第一次还是很爽的,太久沒有在户外動過。 第二次打,有點夸張,因為早上下雨,我們就推遲從8點到10點,在烈日下打了快...

网友评论

      本文标题:MSSQL 連續出勤(二)

      本文链接:https://www.haomeiwen.com/subject/psbdyktx.html