2016-08-23 70 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