Sql Server 考勤 按考勤号码按月份 分组汇总

select id
,考勤号码
,name
,dep
,ISNULL([KQ].[cktime],'') as cktime
,ISNULL([KQ].[cktimet],'') as cktimet
,convert(varchar(20),date,120) as date
,convert(varchar(40),Checkin,120) as Checkin
,convert(varchar(40),CheckOut,120) as CheckOut 
from kq 
union all 
select null as id
,考勤号码
,name
,null as dep
,null as cktime
,null as cktimet
,convert(varchar(7),date,120)+'月' as date ,'月汇总'  as Checkin
,convert(varchar(20),count(考勤号码)) as CheckOut 
from kq 
group by 考勤号码,name,convert(varchar(7),date,120) order by name,date

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

注释:默认地,UNION 操作符选取不同的值,即UNION是去了重的。如果允许重复的值,请使用 UNION ALL。

--查询当天: select * from info where DateDiff(dd,datetime,getdate())=0 
--查询24小时内: select * from info where DateDiff(hh,datetime,getdate())<=0 

你可能感兴趣的:(sql,server)