SQL语言考勤打卡记录 求教关于提取考勤打卡记录的sql语句

\u95ee\u4e00\u4e2a\u8003\u52e4SQL\u8bed\u53e5\u7684\u95ee\u9898\uff0c\u60f3\u67e5\u8be2\u4e00\u6574\u6708\u8003\u52e4\u8bb0\u5f55

select \u5458\u5de5ID,a.[1] \u4e0a\u73ed\u65f6\u95f4,b.[1] \u4e0b\u73ed\u65f6\u95f4,datediff(mm,b.[1] - a.[1]) \u7d2f\u8ba1\u65f6\u95f4,
a.[2] \u4e0a\u73ed\u65f6\u95f4,b.[2] \u4e0b\u73ed\u65f6\u95f4,datediff(mm,b.[2] - a.[2]) \u7d2f\u8ba1\u65f6\u95f4,.......
from

( select \u5458\u5de5ID,\u4e0a\u73ed\u65f6\u95f4 from \u8003\u52e4\u8868
pivot ( min( \u8003\u52e4\u65f6\u95f4) for datepart(dd, \u8003\u52e4\u65f6\u95f4) in ( [1],[2],[3],................... )) as pvt ) a,

( select \u5458\u5de5ID,\u4e0a\u73ed\u65f6\u95f4 from \u8003\u52e4\u8868
pivot ( mxn( \u8003\u52e4\u65f6\u95f4) for datepart(dd, \u8003\u52e4\u65f6\u95f4) in ( [1],[2],[3],................... )) as pvt ) b
where a.\u5458\u5de5ID = b.\u5458\u5de5ID

\u697c\u4e3b\u597d\uff0c\u6211\u8fd9\u51e0\u5929\u4e5f\u6b63\u5728\u505a\u8003\u52e4\u7684\u4e1c\u897f\u3002\u4f60\u60f3\u8981\u4e2a\u4ec0\u4e48\u6837\u5b50\u7684\u6570\u636e\uff0c\u6216\u8005\u6709\u4ec0\u4e48\u95ee\u9898\u5462\uff1f\u6211\u60f3\u8bf4\u7684\u662f\uff0cSQL\u4e2d\u5173\u4e8e\u65f6\u95f4\u7684\u4e1c\u897f\u90fd\u4e0d\u8981\u60f3\u7684\u592a\u7b80\u5355\uff0c\u4ed6\u662f\u4e2a\u590d\u6742\u7684\u4e1c\u897f\u3002\u8bf4\u660e\u4e0b\u4f60\u7684\u95ee\u9898\uff0c\u6211\u4f30\u8ba1\u53ef\u4ee5\u7ed9\u4f60\u89e3\u51b3\u3002

首先要有一个工厂日历的表,列出所有工作日,至少一个字段:工作日 varchar(10)。
然后这样即可:
select id,
迟到次数=sum(case when timec>'08:00:00' tand timec<'09:00:00' then 1 else 0 end),
旷工次数=sum(case when timec>'09:00:00' or timec is null then 1 else 0 end),
打卡次数=sum(case when timec is null then 0 else 1 end)
from
(
SELECT * FROM 工厂日历 left join
(select id,
datec=convert(varchar(10),card_time,120),
timec=substring(convert(varchar,card_time,120),12,8)
from tablename
) a
on 工作日=DATEC
) b
group by ID

假设这个表的名称叫做 work,来存储打卡的时间信息
select ID,
sum(case when card_time>='%-%-% 08:00:00' and card_time<='%-%-% 08:59:59' then 1 else 0 end ) as '迟到次数',
sum(case when card_time>='%-%-% 09:00:00' or card_time='' then 1 else 0 end ) as '旷工次数',
sum(case when card_time<>'' then 1 else 0 end) as '总的打卡次数'
from work
group by ID
不知道时间这么表示对不对

  • SQL 绛涢夋暟鎹棶棰(寮傚父鎵撳崱璁板綍绛涢)
    绛旓細select 濮撳悕,缂栧彿,datepart(day,鎵撳崱鏃堕棿) from 琛 group by 濮撳悕,缂栧彿,datepart(day,鎵撳崱鏃堕棿)having count(*)<>2 杩欐牱灏卞ソ浜嗭紝鎴戜滑鍏徃鐜板湪鍋氱殑灏辨槸鑰冨嫟绯荤粺锛屽鏋滄湁闂鍙互HI鎴戠户缁氦娴
  • SQlSever2008鏁版嵁搴,缁熻鏌愪汉鍑哄嫟銆佺己鍕ょ殑澶╂暟鍙婃棩鏈熸
    绛旓細SQlSever2008鏁版嵁搴擄紝缁熻鏌愪汉鍑哄嫟銆佺己鍕ょ殑澶╂暟鍙婃棩鏈熸 濡傛灉浣犺繖涓槸鏈绠鍗曠殑鑰冨嫟璁板綍锛屼笉娑夊強鍒颁笁鐝掑拰鍔犵彮涔嬬被鐨勶紝閭d箞涓涓渶绠鍗曠殑琛ㄦ槸杩欐牱 鍛樺伐琛紙涓嶇敤璇翠簡鍚э紝鍩烘湰淇℃伅锛 璁板綍琛紙鏃ユ湡銆佸憳宸ュ彿銆佸紑濮嬫椂闂淬佺粨鏉熸椂闂淬佸嚭鍕ゆ儏鍐碉級 濡傛灉鑷姩鎵撳崱鏈猴紝鑾峰彇鐨勫氨鏄伐鍙枫佹棩鏈熴佹椂闂淬
  • sql鏁版嵁搴撲腑澶氫釜鑰冨嫟鎵撳崱鏁版嵁,鎬庢牱鎸夎冨嫟鍙,鏃ユ湡鍚堟垚涓鏉
    绛旓細oracle锛歴elect 鑰冨嫟鍙,鏃ユ湡,wm_concat(鏃堕棿) from 琛 group by 鑰冨嫟鍙,鏃ユ湡 sql:select stuff((select ',' + 鏃堕棿 from 琛 where 鏃ユ湡 = a.鏃ユ湡 and 鑰冨嫟鍗″彿 = a.鑰冨嫟鍗″彿 for XML path('')),1,1,'') 宸ュ彿,鑰冨嫟鍗″彿,鏃ユ湡 From 琛 a group by 鑰冨嫟鍗″彿, 鏃ユ湡 ...
  • sql鎬庝箞鎶婇拤閽鑰冨嫟鐨 涓婄彮鎵撳崱 鍜 涓嬬彮鎵撳崱 涓ゆ潯sql璇彞缁勫悎鎴愪竴鏉ql...
    绛旓細棣栧厛浣犺鏈夊瓧娈垫妸涓婄彮鍜屼笅鐝竴涓瀵瑰簲璧锋潵锛屽嵆涓鏉′笂鐝暟鎹浣曞搴斿埌鐩稿搴旂殑涓嬬彮鏁版嵁銆傝鍙ョ被浼间笅闈㈣繖鏍峰氨琛屼簡 select from (select from 琛 where 绫诲埆='涓婄彮')a ,(select from 琛 where 绫诲埆='涓嬬彮')b where 纭畾涓婁笅鐝竴涓瀵瑰簲鐨勬潯浠讹紝濡俛.濮撳悕=b.濮撳悕 and a.鏃堕棿=b.鏃堕棿 ...
  • 鍦╫racle鏁版嵁搴撲腑,鍛樺伐鑰冨嫟缁熻鎬庝箞鍐sql璇
    绛旓細(ms_id user_id ms_time ms_desc ms_tag )鍏夐潬杩欎竴涓〃锛屼笉鑳界‘瀹氫綘闇瑕佺殑淇℃伅鍟娿傛瘮濡傝繜鍒版鏁帮紝鏃╅娆℃暟锛岃繕闇瑕佺煡閬撲笂涓嬬彮鐨勬椂闂村晩锛堟槸鍥哄畾鐨勫煎悧锛夋椃宸ユ鏁帮紝闇瑕佺煡閬撳摢姝ゆ槸宸ヤ綔鏃ュ晩锛堜篃鏄浐瀹氬硷紝杩樻槸鎸夊父瑙勭畻锛夊啀鏈夛紝姣忎釜浜轰笂鐝墦涓娆″崱锛屼笅鐝墦涓娆″崱锛堝嵆姣忎汉姣忓湪鍦ㄨ繖涓〃涓湁2鏉璁板綍缃...
  • 姹備慨鏀规煇涓汉鏌愬ぉ鏌愭鑰冨嫟璁板綍鐨sql璇彞
    绛旓細浠涔堟暟鎹簱锛無racle鏁版嵁搴撹鍙ュ涓嬶細update A set 鏃堕棿瀛楁=to_date('2020-5-13 08:00:00','yyyy-mm-dd HH24:MI:SS')where id=1
  • 鏈夊涓嬩竴鑰冨嫟琛,鏄瘡澶╃殑鎵撳崱璁板綍,姣忓ぉ鏈夊洓鏉,姹傜敤浠涔sql璇彞鍙互寰楀埌...
    绛旓細濡傛灉鏁版嵁榻愬叏杩樺彲浠ヨ绠 濡傛灉瀛樺湪蹇樿鎵撳崱鐜拌薄 杩樿鍒ゆ柇 灏遍夯鐑︿簡 鐢╠atediff DATEDIFF ( datepart , startdate , enddate )灏忔椂鐢╤our DATEDIFF ( hour, startdate , enddate )鍏朵粬鑷寰幆澶勭悊
  • SQL鑰冨嫟缁熻璇彞,姹傚姪
    绛旓細select name,sum(case when intime between '8:00' and '8:29' then 1 else 0 end ) as '杩熷埌',sum(case when intime between '8:30' and '9:00' then 1 else 0 end ) as '缂哄嫟'from table1 group by name 鍥犱负鈥8锛30鈥濇槸涓涓叕鐢ㄦ椂闂寸偣锛屼笉鑳藉垽鍒紡杩熷埌杩樻槸缂哄嫟锛屾墍浠ヨ繜鍒...
  • sql 琛岃浆鍒,濡傚浘鎵绀烘槸姣忎釜浜烘瘡澶╃殑鑰冨嫟鎵撳崱鏁版嵁,鎬庢牱鍙互鎶婃瘡涓汉鐨...
    绛旓細濡傛灉鏄痵qlserver浣犻渶瑕佸厛寤虹珛涓涓嚱鏁板儚杩欐牱 CREATE FUNCTION [dbo].[JoinString](@time varchar(100),@name varchar(100))RETURNS varchar(2000)ASBEGINDECLARE @tmp varchar(1000)set @tmp=''SELECT @tmp=@tmp+','+sj from (select 浜哄憳濮撳悕,CONVERT(varchar(100), 鍒峰崱鏃ユ湡鏃堕棿, 23) as rq,...
  • sql璇彞瀹炵幇鑰冨嫟鎶ヨ〃,sql璇彞鎬庢牱瀹炵幇鍛樺伐鍚屼竴澶╁彧鏈変袱娆¤冨嫟
    绛旓細涓ゆ鑰冨嫟锛歴elect 鍛樺伐ID,TRUNC(TIME,'d') FROM 鑰冨嫟琛 group by 鍛樺伐ID,TRUNC(TIME,'d')having count(*)=2;婕忔墦锛歴elect 鍛樺伐ID,TRUNC(TIME,'d') FROM 鑰冨嫟琛 group by 鍛樺伐ID,TRUNC(TIME,'d')having count(*)<2;
  • 扩展阅读:手机记工天考勤 ... 加班考勤记录表 ... 手机个人上班记工表 ... 考勤软件修改考勤记录 ... 自己在手机上记考勤 ... 员工每日考勤表 ... 移动考勤云app下载 ... 记上班考勤软件 ... 工人记工考勤表免费下载 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网