選擇作業id,
(案例d1當10然後8當-10然後20當8然後8 else 0 end)*3600 sb1,
(案例d1當10然後20當-10然後32當8然後17 else 64 end)* 3600 XB 1,
-...
(case d31當10然後8當-10然後20當8然後8 else 0 end)*3600 sb31,
(case d31當10然後20當-10然後32當8然後17 else 64 end)* 3600 XB 31
),
kq1 as(
select用戶標識id,檢查時間聯系類型,檢查類型類型,行編號()over(按檢查時間排序)rn
來自c
),
Kq2As(-妳必須保證有上班的人並且當天上班的人只有1,否則妳要重新上班。
Select t1.id,day (t1.checktime) DD,-什麽日期?
DateDiff (SS,CAST (Convert (CHAR (10),T1。CT,120)作為日期時間,T1。CT) sb,-工作秒。
DateDiff (SS,CAST (convert (CHAR (10),T1。CT,120)表示為日期時間t2。CT)XB-下班後幾秒鐘。
從kq1 t1在t1.id=t2.id和t1.rn=t2.rn+1上連接kq1 t2
其中t1.type='I '
),
kq as(
選擇id,
max(DD = 1然後sb端的情況)sb1,max(DD = 1然後xb端的情況)xb1,
-...
max(DD = 31然後sb端的情況)sb2,max(DD = 31然後xb端的情況)xb31,
來自kq2
按id分組
)
選擇ui.userid,ui.name,
kq . sb 1 & lt;=pb.sb1然後'準時'否則'不準時'結束sb1,
kq . XB 1 & gt;=pb.xb1然後'準時'否則'不準時'結束xb1,
-...
kq . sb 31 & lt;=pb.sb31然後'準時'否則'不準時' end sb31,
kq.xb31 >時的情況;=pb.xb31然後“準時”否則“不準時”結束xb31
從userinfo ui在ui上左連接Pb . userid = Pb . id
ui.userid=kq.id上的左連接kq
大致如此,什麽都沒發生。了解之後根據自己的需求去改變。