oracle case when的用法
select col1, col2,
case
when col3 > 1 and col3 <2
then '1'
when col3 > 2 and col3 <3
then '2'
when col3 > 3 and col3 <4
then '3'
else '4'
end mylevel
from table1
注意點:
1、以case開頭,以end結尾
2、分支中when 後跟條件,then為顯示結果
3、else 為除此之外的預設情況,類似於高階語言程式中switch case的default,可以不加
4、end 後跟別名
表示式有兩種表達方式:
--select case when 用法簡單case函式
case ***
when'1
'then'男
'when'2
'then'女
'else'其他
'end
--case搜尋函式
case
when *** ='1
'then'男
'when *** ='2
'then'女
'else'其他
'end
select grade, count (casewhere case when 用法when *** =
1then
1/*
*** 1為男生,2位女生
*/else
null
end) 男生數,
count (case
when *** =
2then
1
else
null
end) 女生數
from students group
by grade;
select t2.*, t1.*group by case when 用法from t1, t2
where (case
when t2.compare_type ='a
'and
t1.some_type like
'nothing%
'then
1
when t2.compare_type !='a
'and
t1.some_type not
like
'nothing%
'then
1
else
0
end) =
1
selectdecode() 函式case
when salary <=
500then'1
'when salary >
500and salary <=
600then'2
'when salary >
600and salary <=
800then'3
'when salary >
800and salary <=
1000then'4
'else
null
end salary_class, --
別名命名
count(*)
from table_a
group
bycase
when salary <=
500then'1
'when salary >
500and salary <=
600then'2
'when salary >
600and salary <=
800then'3
'when salary >
800and salary <=
1000then'4
'else
null
end;
select decode(***, '貌似只有oracle提供該函式,而且不支援ansi sql,語法上也沒case when清晰,個人不推薦使用。m', '
male
', '
f', '
female
', '
unknown
')from employees;
在where中特殊實現
select t2.*, t1.*這種方法也是在特殊情況下使用,要多注意邏輯,不要弄錯。from t1, t2
where (t2.compare_type ='a
'and t1.some_type like
'nothing%
') or
(t2.compare_type !='a
'and t1.some_type not
like
'nothing%
')
ORACLE關於case when語句
其中,最好玩和最有用的是oracle裡面的case when then else end語句,剛開始學的時候還是懵懂懵懂的,不是很懂,後來老師給了很多關於oracle的作業,做著做著慢慢就懂了很多,下面我來講幾個例子。1 題目 統計列印各科成績,各分數段人數 課程id,課程名稱,100 85 85 ...
Oracle中case when的用法
最早接觸case when是在行列轉的時候,資料庫中最難的就是各種的查詢,此次的業務需要匯出excel,匯出的內容包含了很多的字段,各種聯合查詢,還有需要計算 分組聯合等。歷經整整一下午終於以近兩百行結束了這個業務。特記錄對於case when的用法,歡迎各位朋友指正,不喜勿噴。首先case whe...
行列互轉之case when
檢視資料結構 select from emp select ename,sal,deptno from emp 行轉列,case when和max 函式 select ename,max case deptno when 10 then sal end d10,max case deptno whe...