2016-03-01 67 views
1

我在練習一些SQL,並且必須從數據庫中檢索所有關於(sal + comm)> 1700的僱員的信息。我知道這可以用一個簡單的WHERE表達式來完成,但我們正在練習CASE聲明,所以我們需要這樣做。SQL使用CASE表達式有條件地選擇行

我已經知道常規CASE如何工作來賦值依賴於其他行值的新行值,但我不明白如何根據使用CASE表達式的條件來選擇行。

這是我迄今取得:

SELECT 
    CASE 
     WHEN (sal+comm) > 1700 THEN empno 
    END AS empno 
FROM emp; 

我知道這是錯的,但我在這裏stucked。任何幫助或任何資源搜索和閱讀有關將不勝感激,謝謝!

回答

4
SELECT * 
FROM emp 
WHERE (CASE WHEN (sal+comm) > 1700 THEN 1 
      ELSE 0 
     END) = 1 
+0

謝謝,這就是我一直在尋找! –

2

CASE聲明將產生一個結果,你可以比較它或在其他操作中使用它。

在這種情況下,工資取決於emp.job

SELECT * 
FROM emp 
WHERE CASE WHEN emp.job = 'DEVELOPER' THEN salary*1.5 
      WHEN emp.job = 'DB' THEN salary*2 
     END > 1700 

爲了解決你的情況是矯枉過正,但我​​想你可以包括其他案件。

SELECT * 
FROM emp 
WHERE CASE WHEN sal+comm > 1700 THEN 1 
      ELSE 0 
     END > 0 
-4

你想要一個WHERE子句。

SELECT empNo 
FROM emp 
WHERE sal+comm > 1700 
+3

@Elias明確表示,他知道如何在一個簡單的'WHERE'子句中做到這一點,但想用'CASE' –