Case具有兩種格式。簡單Case函數和Case搜索函數。
--簡單Case函數
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函數
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
這兩種方式,可以實現相同的功能。簡單Case函數的寫法相對比較簡潔,但是和Case搜索函數相比,功能方面會有些限制,比如寫判斷式。
還有一個需要注意的問題,Case函數只返回第一個符合條件的值,剩下的Case部分將會被自動忽略。
--比如說,下面這段SQL,你永遠無法得到“第二類”這個結果
CASE WHEN col_1 IN ( 'a', 'b') THEN '第一類'
WHEN col_1 IN ('a') THEN '第二類'
ELSE'其他' END
下面我們來看一下,使用Case函數都能做些什么事情。
一,已知數據按照另外一種方式進行分組,分析。
有如下數據:(為了看得更清楚,我並沒有使用國家代碼,而是直接用國家名作為Primary Key)
| 國家(country) | 人口(population) |
| 中國 | 600 |
| 美國 | 100 |
| 加拿大 | 100 |
| 英國 | 200 |
| 法國 | 300 |
| 日本 | 250 |
| 德國 | 200 |
| 墨西哥 | 50 |
| 印度 | 250 |
根據這個國家人口數據,統計亞洲和北美洲的人口數量。應該得到下面這個結果。
| 洲 | 人口 |
| 亞洲 | 1100 |
| 北美洲 | 250 |
| 其他 | 700 |
想要解決這個問題,你會怎么做?生成一個帶有洲Code的View,是一個解決方法,但是這樣很難動態的改變統計的方式。
如果使用Case函數,SQL代碼如下:
按 Ctrl+C 復制代碼
