请教一个简单查询:
在如下的“需要提醒的事务信息”表中,写一个查询,获取今天给员工编号为"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

解决方案 »

  1.   

    好乱.
    请以这种形式来贴数据..[名称]    [时间]                  [状态]汽车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多谢执教
      

  2.   

    在如下的“需要提醒的事务信息”表中,写一个查询,获取今天给员工编号为"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.   

    在如下的“需要提醒的事务信息”表中,写一个查询,获取今天给员工编号为"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 
      

  4.   

    [CODE= SQL]
    --参考下,没有执行,不一定对,但是大概就是这个意思吧,关键就是用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]