使用大于或小于的SQL Server计算列

时间:2017-10-11 07:11:57

标签: sql-server

我在sql server中有这个表我想根据我的列的结果创建一个计算字段,我希望结果显示这个。 列名是 键,家庭作业,测验,考试,结果,等级

Result=>90 "A+,"Result=>80 "A",Result=>70 "B+",Result=>60 "B"

3 个答案:

答案 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将无法正确评分