是否有SQL更新查询为同一用户ID中的多个记录更新相同的值?

问题描述 投票:1回答:3

我有一个仅用于计算的列。它显示0或正数,表示休假时间。在我们的时间表中,它作为负数输入,我将其转换为正数进行计算。我需要一个正值才能进入员工每个条目的NonWorkHrs列。它必须是用户ID中所有记录的相同值。

我尝试过使用case语句并在子查询中选择max

update DME
set NonWorkHrs = 
(
 select max(VacationHours)
 from DME b
 where useruid = b.useruid
 and useruid in (1,2,3)
 and NonWorkHrsHolder > 0
)
where useruid in (1,2,3)

我还尝试了一个案例陈述

update DME
set NonWorkHrs =
(case 
  when (VacationHours > 0)
  then (VacationHours)
 --no else statement is need. All rows should have the same value
 end
 ) 
where useruid in (1,2,3)

我在VacationHours列中将负的TimeEntered值转换为正值。 NonWorkHrs列用于计算以确定实际工作时间。

预期的结果是

Useruid UserFullName    NonWorkHrs  VacationHours   TimeEntered
1       Jane Doe         8             8             -8
1       Jane Doe         8             0              10
1       Jane Doe         8             0              12
2       John Doe         18            18            -18
2       John Doe         18            0              23
3       Bob Builder      16            16            -16
3       Bob Builder      16            0              40

实际结果是

Useruid UserFullName    NonWorkHrs  VacationHours   TimeEntered
1       Jane Doe          18           8             -8
1       Jane Doe          18           0              10
1       Jane Doe          18           0              12
2       John Doe          18           18            -18
2       John Doe          18           0              23
3       Bob Builder       18           16            -16
3       Bob Builder       18           0              40
sql sql-server case-statement update-statement
3个回答
© www.soinside.com 2019 - 2024. All rights reserved.