请教一个简单查询:
在如下的“需要提醒的事务信息”表中,写一个查询,获取今天给员工编号为"3"的员工的提醒事务列表
需要提醒的事务信息(T_Works)
列名 数据类型 中文解释 说明
WorkID Int 事务代码 标识、主键
Empid Int 员工号 员工表的员工编号
WorkCreater Int 事务登记人
RemindedPerson Varchar(20) 被提醒人
AlterTime Char(10) 提醒时间 取值格式为:周期,开始时间(时),开始时间(分),结束时间(时),结束时间(分)。
如:1,9,35,11,35表示每周一的9:35-11:35提醒星期周期的取值为:
1:周一2:周二3:周三4:周四5:周五6:周六7:周天8:每个工作日9:每个周末
10:每天
WorkDesc Varchar(100) 事务描述
Status Int 事务状态
Note Varchar(100) 备注
Operator Varchar(100) 操作员
OperateTime Datetime 操作时间 默认当前系统时间可用的到的函数:
getDate()
Datepart
charindex
在如下的“需要提醒的事务信息”表中,写一个查询,获取今天给员工编号为"3"的员工的提醒事务列表
需要提醒的事务信息(T_Works)
列名 数据类型 中文解释 说明
WorkID Int 事务代码 标识、主键
Empid Int 员工号 员工表的员工编号
WorkCreater Int 事务登记人
RemindedPerson Varchar(20) 被提醒人
AlterTime Char(10) 提醒时间 取值格式为:周期,开始时间(时),开始时间(分),结束时间(时),结束时间(分)。
如:1,9,35,11,35表示每周一的9:35-11:35提醒星期周期的取值为:
1:周一2:周二3:周三4:周四5:周五6:周六7:周天8:每个工作日9:每个周末
10:每天
WorkDesc Varchar(100) 事务描述
Status Int 事务状态
Note Varchar(100) 备注
Operator Varchar(100) 操作员
OperateTime Datetime 操作时间 默认当前系统时间可用的到的函数:
getDate()
Datepart
charindex
请以这种形式来贴数据..[名称] [时间] [状态]汽车A 2001-1-1 1:1:1 出发
汽车A 2001-1-1 2:2:2 返回
汽车B 2001-1-1 3:3:3 出发
汽车C 2001-1-1 5:5:5 出发
汽车B 2001-1-1 4:4:4 返回
汽车C 2001-1-1 6:6:6 返回
汽车D 2001-1-1 7:7:7 出发
汽车A 2001-1-1 8:8:8 出发
汽车A 2001-1-1 9:9:9 返回
通过一条SQL查询得到以下结果
注意需要考虑同一辆汽车的多次出发和返回的情况[名称] [出发时间] [返回时间]汽车A 2001-1-1 1:1:1 2001-1-1 2:2:2
汽车B 2001-1-1 3:3:3 2001-1-1 4:4:4
汽车C 2001-1-1 5:5:5 2001-1-1 6:6:6
汽车D 2001-1-1 7:7:7 null
汽车A 2001-1-1 8:8:8 2001-1-1 9:9:9多谢执教
需要提醒的事务信息(T_Works)
列名 数据类型 中文解释 说明
WorkID Int 事务代码 标识、主键
Empid Int 员工号 员工表的员工编号
WorkCreater Int 事务登记人
RemindedPerson Varchar(20) 被提醒人
AlterTime Char(10) 提醒时间 取值格式为:周期,开始时间(时),开始时间(分),结束时间(时),结束时间(分)。
如:1,9,35,11,35表示每周一的9:35-11:35提醒星期周期的取值为:
1:周一2:周二3:周三4:周四5:周五6:周六7:周天8:每个工作日9:每个周末
10:每天
WorkDesc Varchar(100) 事务描述
Status Int 事务状态
Note Varchar(100) 备注
Operator Varchar(100) 操作员
OperateTime Datetime 操作时间 默认当前系统时间 可用的到的函数:
getDate()
Datepart
charindex
需要提醒的事务信息(T_Works)
列名 数据类型 中文解释 说明
WorkID Int 事务代码 标识、主键
Empid Int 员工号 员工表的员工编号
WorkCreater Int 事务登记人
RemindedPerson Varchar(20) 被提醒人
AlterTime Char(10) 提醒时间 取值格式为:周期,开始时间(时),开始时间(分),结束时间(时),结束时间(分)。如:
1,9,35,11,35表示每周一的9:35-11:35提醒星期周期的取值为:1:周一2:周二3:周三4:
周四5:周五6:周六7:周天8:每个工作日9:每个周末10:每天
WorkDesc Varchar(100) 事务描述
Status Int 事务状态
Note Varchar(100) 备注
Operator Varchar(100) 操作员
OperateTime Datetime 操作时间 默认当前系统时间 可用的到的函数:
getDate()
Datepart
charindex
--参考下,没有执行,不一定对,但是大概就是这个意思吧,关键就是用Case When去判断,反正是一天的不用判断时间段
Select * From T_Works Where Case When Left(AlterTime,CharIndex(',',AlterTime)) In (1,2,3,4,5,6,7) And DatePart(WeekDay,GetDate())+1=Left(AlterTime,1) Then 1
When Left(AlterTime,CharIndex(',',AlterTime))=8 And DataPart(WeekDay,GetDate()) In(1,2,3,4,5) Then 1
When Left(AlterTime,CharIndex(',',AlterTime))=9 And DataPart(WeekDay,GetDate())=0 Then 1
When Left(AlterTime,CharIndex(',',AlterTime))=10 then 1
End
[/Code]