2016-08-23 69 views
-5

有一个表:Emp(EmpId, EmpName, Sal)SQL SELECT CASE

我不得不使用下面的信息来计算奖金一起显示表的所有数据:

  sal > 5000, bonus = 10% 
      sal > 10000, bonus = 20% 
      sal > 25000, bonus = 30% 

在一个单一的查询。

+1

你迄今所做的什么码? – Gwen

+0

@谁投票结束这个问题为“不清楚你在问什么” - 请分享你对这个问题不清楚的内容。 – mathguy

回答

1

使用CASE表达式:

select empid, empname, sal, 
     case 
      when sal > 25000 then sal * 0.30 
      when sal > 10000 then sal * 0.20 
      when sal > 5000 then sal * 0.10 
      else 0 
     end as bonus 
from emp; 
+0

我怀疑奖金= 30%意味着'sal * 0.30'而不是'30' :-) – mathguy

+0

@subhamoymaitra - 请注意,'when ... then ...'对的顺序至关重要。如果第一个'when'条件失败,下一个被测试,并且一旦找到第一个成功的'when',就会执行相应的'then'部分,并且'case'表达完成。 (如果不满足'when'条件,则使用'else'子句中的值;'else'是可选的,如果它被省略并且执行得到那么远,则默认值为'null'。)练习:什么如果你先把'sal> 5000 ...'比较放在一起,会发生什么? – mathguy