Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2012 当满足2个条件时更改字段_Sql Server 2012 - Fatal编程技术网

Sql server 2012 当满足2个条件时更改字段

Sql server 2012 当满足2个条件时更改字段,sql-server-2012,Sql Server 2012,我有一个时间表数据库,需要在下面的示例中更改付款类型 如果一个人在统计假日(TypeOfPay=Stat假日)获得报酬,并且在该天工作(TypeOfPay=regular),则在中将所有行更改为TypeOfPay=Stat 日期说明员工类型支付时间支出 2016-09-05 ABC_公司BobJones统计假日8.00 2016-09-05 BCD_公司BobJones常规1.25 2016-09-05升降检查BobJones常规0.25 提前谢谢 Gerry这是一个非常简单的更新。您可以使用您

我有一个时间表数据库,需要在下面的示例中更改付款类型

如果一个人在统计假日(TypeOfPay=Stat假日)获得报酬,并且在该天工作(TypeOfPay=regular),则在中将所有行更改为TypeOfPay=Stat

  • 日期说明员工类型支付时间支出
  • 2016-09-05 ABC_公司BobJones统计假日8.00
  • 2016-09-05 BCD_公司BobJones常规1.25
  • 2016-09-05升降检查BobJones常规0.25
  • 提前谢谢
    Gerry

    这是一个非常简单的更新。您可以使用您提供的条件(相同的日期、假日与常规假日、相同的员工)将表连接到表本身,并更新薪资类型。 您可以通过只执行连接而不进行更新来查看相关性

    select * 
    from #Timesheet t
    left join #Timesheet holiday on t.date = holiday.date and t.employee = holiday.employee and t.typeofPay = 'regular' and holiday.typeofpay = 'Stat Holiday'
    
    这是我使用的表格设置。显然,您将用实际的表名替换#时间表

    create table #Timesheet
    (
    [Date] Date not null,
    [Description] varchar(20) null,
    [Employee] varchar(30) not null,
    [TypeOfPay] varchar(12) null,
    [TimeSpent] Numeric (12,2) null
    )
    Insert into #Timesheet 
    (Date,Description, Employee, TypeOfPay, TimeSpent)
    Values
    ('2016-09-05', 'ABC_Company', 'BobJones', 'Stat Holiday', 8.00),
    ('2016-09-05', 'BCD_Company', 'BobJones', 'regular' ,1.25),
    ('2016-09-05', 'Lift_Check', 'BobJones', 'regular', 0.25),
    ('2016-09-05', 'ABC_Company', 'BobJones', 'Stat Holiday', 8.00), 
    ('2016-09-05', 'BCD_Company', 'BobJones', 'regular' ,1.25), 
    ('2016-09-05', 'Lift_Check', 'BobJones', 'regular', 0.25), 
    ('2016-09-05', 'Lift_Check', 'JoeSmith', 'regular', 0.25), 
    ('2016-09-06', 'Lift_Check', 'BobJones', 'regular', 0.25)
    
      update t --(this is your timesheet table)
    Set t.TypeOfPay = 'Stat in' 
    from #Timesheet t
    inner join #Timesheet holiday on t.date = holiday.date and t.employee = holiday.employee and t.typeofPay = 'regular' and holiday.typeofpay = 'Stat Holiday'
    where t.TypeOfPay <> 'Stat Holiday'  
    

    嗨,xenapan,谢谢你的回复。我需要的只是定期更改为Stat In,而不是Stat假日。我试着跑步和做些改变,但是我很难得到正确的答案。谢谢,Gerry你试过什么?Set t.TypeOfPay='Stat Holiday'我在Stat In中的每一行都添加了几行,无论日期或员工。显示代码。并解释什么不应该更改以及为什么我不能将代码添加为代码。我放了4个空格,但它不允许
    select * from #Timesheet