2016-03-08 87 views
0

我有一個迷你數據庫(mymoney),它有一個名爲total_amount的列。現在,我想根據total_amount列中的行值獲取此列並添加一個額外的列GRP2(值爲low,mediumhigh)。 所以我有這個SQL CASE條件總是返回ELSE值

total_amount 
5000 
27000 
36000 
50000 

我想在此

total_amount GRP2 
5000   low 
27000   low 
36000   medium 
50000   high 

我用下面的SQL查詢嘗試:

SELECT mymoney.total_amount, 
    CASE mymoney.total_amount 
     WHEN mymoney.total_amount <= 30000 THEN 'low' 
     WHEN mymoney.total_amount >= 31000 AND mymoney.total_amount <= 40000 THEN 'medium' 
     ELSE 'high' 
    END AS GRP2 
FROM mymoney 

GRP2我即使在中有明確的號碼,也可以到達high 210應該標記爲lowmedium。 (btw:total_amount中的值的數據類型都是整數)。

total_amount GRP2 
5000   high 
27000   high 
36000   high 
50000   high 

任何人都可以告訴我我做錯了什麼?

回答

1

您在濫用CASE表達式。試試這樣:

SELECT total_amount, 
    CASE 
     WHEN total_amount <= 30000 THEN 'low' 
     WHEN total_amount > 30000 AND total_amount <= 40000 THEN 'medium' 
     ELSE 'high' 
    END AS GRP2 
FROM gates_money 
+0

哦,非常感謝,這工作! :)(我也在我的問題中看到一個錯字:'gates_money'應該是'mymoney',現在將編輯) – dliv

1

你是,而你需要搜索的CASE表達式

SELECT mymoney.total_amount, 
    CASE 
     WHEN mymoney.total_amount <= 30000 THEN 'low' 
     WHEN mymoney.total_amount >= 31000 AND mymoney.total_amount <= 40000 THEN 'medium' 
     ELSE 'high' 
    END AS GRP2 
FROM mymoney 
0

使用簡單CASE表達式您也可以試試這個:

SELECT mymoney.total_amount, 
GRP2 = CASE 
     WHEN mymoney.total_amount <= 30000 THEN 'low' 
     WHEN mymoney.total_amount >= 31000 AND mymoney.total_amount <= 40000 THEN 'medium' 
     ELSE 'high' 
     END 
FROM gates_money 

MSDN Documentation

的問候,

+0

你鏈接不工作,問題是關於SQLite,_not_關於SQL Server – MaxU

+0

我的不好,謝謝!我將來會更加關注。 –