打印显示考勤统计时间的存储过程
Create ProceDure GetPrtHour@Month Varchar(50), --月份@SecNo Varchar(50), --部门编号@WokNo varchar(50), 
Create ProceDure GetPrtHour
@Month Varchar(50), --月份
@SecNo Varchar(50), --部门编号
@WokNo varchar(50), --职工号
@Name Varchar(50), --姓名
@Int int --显示第几个
as
Declare @SQL Varchar(8000) --用来存放SQL语句
Declare @Max int --定义每次显示员工的最大个数
Set @Max = 20
create table #Tmp4 --创建临时表#Tmp
(
ID int IDENTITY (1,1) not null, --创建列ID,并且每次新增一条记录就会加1
Month varchar(50),
SecNo Varchar(50),
WokNo Varchar(50)
primary key (ID) --定义ID为临时表#Tmp的主键
);
Set @SQL = 'Insert Into #Tmp4(Month,SecNo,WokNo) Select Distinct Month,SecNo,WokNo
from AttPrt Where Month = ' + '''' + @Month + '''' + ' And SecNo = ' + '''' + @SecNo + ''''
if @WokNo is not null
Set @SQL = @SQL + ' And WokNo = ' + '''' + @WokNo + ''''
if @Name is not null
Set @SQL = @SQL + ' And Name = ' + '''' + @Name + ''''
Set @SQL = @SQL + ' Order by Month,SecNo,WokNo'
Exec (@SQL)
Set @SQl = 'Select Distinct a.Month,a.WokNo,b.Name,b.SecNo,a.NorTotalHour,a.TotalHour,
a.OveTotalHour,a.leaTotalHour From TmpTotalHour as a inner join AttPrt as b
on a.WokNo = b.WokNo Where a.Month = ' + '''' + @Month + '''' +
' And b.SecNo = ' + '''' + @SecNo + ''''
if @WokNo is not null
Set @SQL = @SQL + ' and a.WokNo = ' + '''' + @WokNo + ''''
if @Name is not null
Set @SQL = @SQL + ' and b.Name = ' + '''' + @Name + ''''
Set @SQL = @SQL + ' And a.WokNo in (Select Top ' + Str(@Max,len(@Max)) + ' WokNo From #Tmp4
Where ID not in (Select top ' + Str((@Int - 1) * @Max,len((@Int - 1) * @Max)) + ' ID From #Tmp4)) '
Set @SQL = @SQL + ' Order by a.Month,b.SecNo,a.WokNo'
Exec (@SQL)
Drop table #Tmp4
GO
本文作者:佚名 来源:http://hi.baidu.com/qzrc/blog/
CIO之家 www.ciozj.com 微信公众号:imciow
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读