我在sql server中有这个表我想根据我的列的结果创建一个计算字段,我希望结果显示这个。 列名是 键,家庭作业,测验,考试,结果,等级
Result=>90 "A+,"Result=>80 "A",Result=>70 "B+",Result=>60 "B"
答案 0 :(得分:0)
CREATE TABLE dbo.T
(
Val INT,
Chr AS (
CASE
WHEN Val <= 59 THEN ''
WHEN Val BETWEEN 60 AND 69 THEN 'B'
WHEN Val BETWEEN 70 AND 79 THEN 'B+'
WHEN Val BETWEEN 80 AND 89 THEN 'A'
WHEN Val >= 90 THEN 'A+'
END
)
)
INSERT INTO dbo.T(Val) VALUES (100),(80),(75)
SELECT * FROM dbo.T
DROP TABLE IF EXISTS dbo.T
答案 1 :(得分:0)
您需要使用如下所示的派生表的概念。我使用result
列使用grade
语句派生新列case
。
create table #tbl(col1 varchar(2), col2 varchar(2), col3 varchar(2), result int)
insert into #tbl(col1,col2,col3,result) values
('A','A','A',10),
('A','A','B',62),
('A','A','C',83),
('A','A','D',94)
SELECT a.col1, a.col2, a.col3, a.result,
case when a.result < 60 then ''
when a.result between 60 AND 69 then 'B'
when a.result between 70 AND 79 then 'B+'
when a.result between 80 AND 89 then 'A'
when a.result > 89 then 'A+'
else NULL
end as grade
FROM
(
Select col1, col2, col3, result
from #tbl
) a
drop table #tbl;
答案 2 :(得分:0)
作为计算栏......
ALTER TABLE MyTable ADD Grade AS
CASE
WHEN Result < 60 THEN ''
WHEN Result < 70 THEN 'B'
WHEN Result < 80 THEN 'B+'
WHEN Result < 90 THEN 'A'
ELSE 'A+'
END
如果你有分数(我在英国开放大学看过)你需要依赖CASE评估顺序和<
使用BETWEEN(与其他答案一样)意味着得分69.5将无法正确评分