基于整数字段计算新列
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';
我有一个 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';