繁体   English   中英

查询以返回某些条件的其他列

[英]query to return additional column with some condition

表格:Emaployee
列:名称(nvarchar(256)),薪水(十进制(18,2))

现在,我想要附加列的结果
'等级'=
如果工资<15000.00,则为“ A”,
如果25000.00>工资> 15000.00,则为“ B”,
如果工资> 25000.00,则为“ C”

如何为此编写查询?

SELECT name, 
       salary, 
       (CASE 
             WHEN salary<15000 THEN 'A' 
             WHEN salary>15000 AND salary <25000 THEN 'B' 
             ELSE 'C' 
       END) AS grade
FROM employee

尚未尝试以下操作,但也可以使用:

SELECT name, 
       salary, 
       IIF (salary<15000, 'A', IIF (salary>15000 AND salary<25000, 'B', IIF (salary>25000, 'C', ))) AS grade
FROM employee

IIF是通过Denali引入T-SQL的,因此最新版本只能用于Denali版本。请检查此T-SQL IIF函数教程

如果薪金<15000.00,则为'Grade'='A';如果薪金> 15000.00,则为'B';如果薪金> 25000.00,则为'C'

规格似乎有缺陷。 您需要回到设计师那里,询问他们哪个级别适用于薪水分别为15000.00和25000.00的员工,因为未指定这些级别。 以下是猜测(我不建议在实践中进行猜测):

SELECT name, salary, 'A' AS Grade
  FROM Employee
 WHERE Salary BETWEEN 0 AND 14999.99
UNION
SELECT name, salary, 'B' AS Grade
  FROM Employee
 WHERE Salary BETWEEN 15000.00 AND 24999.99
UNION
SELECT name, salary, 'C' AS Grade
  FROM Employee
 WHERE Salary >= 25000.00;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM