基于整数字段计算新列

Calculating a new column based on integer fields

我有一个 table,它具有称为 "Day1Reg"、"Day2Reg"、..."Day7Reg"、"Day1OT"、"Day2OT" 的整数列,..."Day7OT"。我想 select table 中的所有行,计算 2 个名为 "WkReg" 和 "WkOT" 的新列,它们将是 DayxReg 和 DayxOT 的总和。 Dayx 列可能为空。到目前为止,这是查询:

select
  *,
  (Day1Reg+Day2Reg+Day3Reg+Day4Reg+Day5Reg+Day6Reg+Day7Reg) as WkReg,
  (Day1OT+Day2OT+Day3OT+Day4OT+Day5OT+Day6OT+Day7OT) as WkOT
from
  Week01
where
  UserName = "JustMe"

已创建 WkReg 和 WkOT 列,但没有值。 Dayx 的几个列中有整数值。没有返回错误,WkReg 和 WkOT 中只有空白值。

UPDATE `Week01` SET `WkReg` = (Day1Reg+Day2Reg+Day3Reg+Day4Reg+Day5Reg+Day6Reg+Day7Reg), 
`WkOT`=(Day1OT+Day2OT+Day3OT+Day4OT+Day5OT+Day6OT+Day7OT) 
WHERE `UserName` = "JustMe"

据推测,某些整数值是NULL,这导致整个总和是NULL。您可以使用 coalesce() 将值替换为 0:

select w.*
       (coalesce(Day1Reg, 0) + coalesce(Day2Reg, 0) + coalesce(Day3Reg, 0) +
        coalesce(Day4Reg, 0) + coalesce(Day5Reg, 0) + coalesce(Day6Reg, 0) + coalesce(Day7Reg, 0)
       ) as WkReg,
       (coalesce(Day1OT, 0) + coalesce(Day2OT, 0) + coalesce(Day3OT, 0) +
        coalesce(Day4OT, 0) + coalesce(Day5OT, 0) + coalesce(Day6OT, 0) + coalesce(Day7OT, 0)
       ) as WkOT
from Week01 w
where w.UserName = 'JustMe';