Case when 的用法
簡單CASE表達式
語法:
CASE search_expression
WHEN expression
WHEN expression
WHEN expressionN THEN resultN
ELSE default_result
搜索CASE表達式
語法:
CASE
WHEN condition
WHEN condistion
WHEN condistionN THEN resultN
ELSE default_result
END
例:
select product_id
case
when product_type_id=
when product_type_id=
when product_type_id=
when product_type_id=
else
end
from products
這兩種方式
還有一個需要注意的問題
比如說
代碼如下
CASE WHEN col_
WHEN col_
ELSE
下面我們來看一下
一
有如下數據:(為了看得更清楚
國家(country) 人口(population)
中國
美國
加拿大
英國
法國
日本
德國
墨西哥
印度
根據這個國家人口數據
洲 人口
亞洲
北美洲
其他
想要解決這個問題
如果使用Case函數
SELECT SUM(population)
CASE country
WHEN
WHEN
WHEN
WHEN
WHEN
WHEN
ELSE
FROM Table_A
GROUP BY CASE country
WHEN
WHEN
WHEN
WHEN
WHEN
WHEN
ELSE
同樣的
SELECT
CASE WHEN salary <=
WHEN salary >
WHEN salary >
WHEN salary >
ELSE NULL END salary_class
COUNT(*)
FROM Table_A
GROUP BY
CASE WHEN salary <=
WHEN salary >
WHEN salary >
WHEN salary >
ELSE NULL END;
二
有如下數據
國家(country) 性別(sex) 人口(population)
中國
中國
美國
美國
加拿大
加拿大
英國
英國
按照國家和性別進行分組
國家 男 女
中國
美國
加拿大
英國
普通情況下
下面是一個是用Case函數來完成這個功能的例子
代碼如下
SELECT country
SUM( CASE WHEN sex =
population ELSE
SUM( CASE WHEN sex =
population ELSE
FROM Table_A
GROUP BY country;
這樣我們使用Select
三
在Check中使用Case函數在很多情況下都是非常不錯的解決方法
下面我們來舉個例子
公司A
代碼如下
CONSTRAINT check_salary CHECK
( CASE WHEN sex =
THEN CASE WHEN salary >
THEN
ELSE
如果單純使用Check
代碼如下
CONSTRAINT check_salary CHECK
( sex =
女職員的條件倒是符合了
實例
代碼如下
create table feng_test(id number
insert into feng_test(id
insert into feng_test(id
commit;
SQL>select * from feng_test;
id val
SQL>select id
when val like
else
end case
from feng_test;
id case
根據我自己的經驗我倒覺得在使用case when這個很像asp case when以在php swicth case開發關語句的用法
From:http://tw.wingwit.com/Article/program/Oracle/201311/19085.html