sqlselect语句的结果如下所示:
select * from table
Location Role Days
-----------------------------------
Hong Kong Senior Associate 48
Canberra Senior Associate 60
Sydney Senior Associate 55
Run Code Online (Sandbox Code Playgroud)
我想在上面的结果中添加一列 - Hours(SQL Server表中没有小时列).
Hours 应根据位置进行计算
结果应该是:
Location Role Days Hours
-----------------------------------------
Hong Kong Senior Associate 48 6.85
Canberra Senior Associate 60 8
Sydney Senior Associate 55 7.586
Run Code Online (Sandbox Code Playgroud)
我试过用select case它来检查只有一个条件(if和else)和列应该在数据库中.
select
case
when location = 'Sydney'
then Days/7
else Days/7.5
end as Hours
Run Code Online (Sandbox Code Playgroud)
但是我想要在一个SQL语句中检查所有条件并添加不在数据库中的小时列.
请任何建议.
A case解决了这个问题:
select location, role, days,
(case when location = 'Hong Kong' then days / 7.0
when location = 'Canberra' then days / 7.5
when location = 'Sydney' then days / 7.25
end) as hours
from t;
Run Code Online (Sandbox Code Playgroud)
您甚至可以使用计算列将此列添加到表中:
alter table t
add hours as (case when location = 'Hong Kong' then days / 7.0
when location = 'Canberra' then days / 7.5
when location = 'Sydney' then days / 7.25
end);
Run Code Online (Sandbox Code Playgroud)