我有下面的shiftdate表,该表存储以rate1和rate2工作的小时数(这些工作时间存储在另一个表中)。我想使用此数据用总值更新shiftdateTotal字段。希望您能提供帮助吗?
SHIFTDATE表
LISTITEM表
listItem行示例(23,BankHolidayRate,12.50)
我能够创建一个执行所需计算的SQL选择,请参见下文:
SELECT shiftDateID,
hoursRate1, t2.rateOfPay as rate1,
hoursRate2, t3.rateOfPay as rate2,
(hoursRate1 * t2.rateOfPay) + ([hoursRate2] * t3.rateOfPay) as myTotal
from dbo.ShiftDate t1
inner join dbo.ListItem t2
on t1.hourlyRate1ID = t2.listItemID
inner join dbo.ListItem t3
on t1.hourlyRate2ID = t3.listItemID
但是现在我有点迷失了。使用此查询或类似的方法,如何将myTotal值插入所需的shiftdateID行的shiftDateTotal中?
我可以将其存储到临时表中,然后遍历数据并使用myTotal更新SHIFTDATE表吗?
答案 0 :(得分:2)
您可以将其转换为更新。转换非常直接:
update sd
set shiftDateTotal = (sd2.hoursRate1 * li1.rateOfPay) + (sd2.hoursRate2 * li2.rateOfPay)
from dbo.ShiftDate sd inner join
dbo.ListItem li1
on sd.hourlyRate1ID = li1.listItemID inner join
dbo.ListItem li2
on sd.hourlyRate2ID = li2.listItemID;
注意:
t1
,t2
,t3
)。NULL
/缺失,您可能要小心。在这种情况下,您需要left join
s和coalesce()
s。