「已注销」 2022-03-27 12:54 采纳率: 100%
浏览 47
已结题

sql 查询计算的问题

根据入职日期及学历情况自动计算转正日期。学历是本科及以下的,转正时间为6个月,学历是本科以上硕士以下的,转正时间为4个月,学历是硕士及以上的,转正时间为2个月。
表AA 入职日期是 A1 学历字段是A2(硕士,本科 ,大专,中专 高中,初中一下,null) 员工编号A3 员工姓名 A4
显示如下
员工编号、员工姓名、入职日期、学历、试用期限、转正日期

  • 写回答

1条回答 默认 最新

  • 全栈小5 全栈领域优质创作者 2022-03-27 13:52
    关注

    【温馨提示:若能帮到您,望给个采纳该答案,谢谢】
    1、效果如下
    使用case when方式

    img

    2、语句如下

    
    /*
    create table AA(
     A3 int, --员工编号
     A1 datetime, --入职日期
     A2 varchar(50), --学历字段(硕士、本科、大专、中专 高中、初中以下、null
     A4 varchar(50) --员工姓名
    )
    
    insert into AA(A3,A1,A2,A4)
    values(1,'2022-03-01','大专','张三')
    
    insert into AA(A3,A1,A2,A4)
    values(2,'2022-02-18','硕士','李四')
    
    insert into AA(A3,A1,A2,A4)
    values(3,'2022-03-10','本科','王五')
    
    insert into AA(A3,A1,A2,A4)
    values(4,'2022-01-23','中专 高中','六六')
    
    insert into AA(A3,A1,A2,A4)
    values(5,'2022-03-20','初中以下','七七')
    
    insert into AA(A3,A1,A2,A4)
    values(6,'2022-03-20',NULL,'九九')
    */
    
    /*
    学历是本科及以下的,转正时间为6个月,
    学历是本科以上硕士以下的,转正时间为4个月,
    学历是硕士及以上的,转正时间为2个月
    */
    --使用case when方式,以及学历使用编码代替
    select 
    A3 as '员工编号',
    A4 as '员工姓名',
    A2 as '学历',
    A1 as '入职时间',
    (
    case
    when A2='大专' or (A2='中专 高中' or A2='初中以下' or A2 is null) then '6个月' 
    when A2='本科' then '4个月' 
    when A2='硕士' then '2个月' 
    end
    ) as '试用期限', 
    (
    case
    when A2='大专' or (A2='中专 高中' or A2='初中以下' or A2 is null) then dateadd(month,6,A1) 
    when A2='本科' then dateadd(month,4,A1)
    when A2='硕士' then dateadd(month,2,A1)
    end
    ) as '转正日期'
    from AA
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月4日
  • 已采纳回答 3月27日
  • 修改了问题 3月27日
  • 修改了问题 3月27日
  • 展开全部