Sql server 2012 当满足2个条件时更改字段
我有一个时间表数据库,需要在下面的示例中更改付款类型 如果一个人在统计假日(TypeOfPay=Stat假日)获得报酬,并且在该天工作(TypeOfPay=regular),则在中将所有行更改为TypeOfPay=StatSql 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这是一个非常简单的更新。您可以使用您
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