2.部门信息表(分组表)
3.工时总表(记录每个月的实际出勤数)(员工号,年度,1月工时,2月工时.....12月工时)
4.休假总表(记录各种假的基数,已休数,剩余数)(员工号,年度,年假基数,上年剩余,已休天数,未休天数,病假基数已休天数,未休天数,其它假已休天数)
5. 考勤明细表(员工号,考勤日期,工时数....)
6. 休假明细表(员工 号,休假日期,休假类型,休假小时数)
7. 休假类型表
8. 工作日表(只需要设置发生状态变化的,周一至周五缺省认为是工作日,周六日为休息日,如10月1日是周一,要设为非工作日,如果刚好是周六,则不需要设置)
9.用户表(包括 权限设置等)
楼下说的 没错,如果你在程序中要查出这样的数据,在程序里拼接sql很方便。如果非要在数据库中直接查出来的话,那就用存储过程,以下是 sqlserver的,如果是 oracel的话,写法有一点点区别,你自己稍微修改一下就行
Create PROCEDURE Test1(@BeginDate DateTime,@EndDate DateTime)AS
begin
declare @Sql varchar(max) = '', @tableName varchar(100) = '',@tempym varchar(400)=''
WHILE @BeginDate <= @EndDate
BEGIN
if charindex(Left(CONVERT(varchar(100), @BeginDate, 112),6),@tempym)<= 0
begin
set @tableName = 'SaleCost'+ Left(CONVERT(varchar(100), @BeginDate, 112),6)
set @tempym = @tempym+@tableName
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].['+@tableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
set @Sql = @Sql + ' select * from '+@tableName
if (Year(@BeginDate)+Month(@BeginDate)) <> (Year(@EndDate)+Month(@EndDate))
set @Sql = @Sql + ' union all '
end
SET @BeginDate = DATEADD(DAY, 1, @BeginDate)
END
print @Sql
EXEC(@Sql)
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)