decode 实例
以往相關(guān)材料:
http://blog.csdn.net/arrowzz/article/details/17144651
http://blog.csdn.net/arrowzz/article/details/17144669表
id,name,score
1,小明,勝
2,小明,勝
3,小李,負(fù)
4,小李,負(fù)
5,小明,負(fù)
6,小李,勝
7,小李,勝
效果
name,勝,負(fù)
小明,2,1
小李,2,2
創(chuàng)建表: create table test20( id integer, name varchar2(20), score varchar2(20) );
插入相關(guān)數(shù)據(jù): insert into test20 values(1,'小明','勝'); insert into test20 values(2,'小明','勝'); insert into test20 values(3,'小李','負(fù)'); insert into test20 values(4,'小李','負(fù)'); insert into test20 values(5,'小明','負(fù)'); insert into test20 values(6,'小李','勝'); insert into test20 values(7,'小李','勝');
select語句: select name 姓名,sum(decode(score, '勝', 1, 0)) 勝,sum(decode(score, '負(fù)', 1, 0)) 負(fù)from test20group by name;
=======================================================================
==========================================================================
PS:主要使用了 decode 函數(shù)
在邏輯編程中,經(jīng)常用到If – Then –Else 進(jìn)行邏輯判斷。
在DECODE的語法中,實(shí)際上就是這樣的邏輯處理過程。
它的語法如下:
DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )
Value 代表某個(gè)表的任何類型的任意列或一個(gè)通過計(jì)算所得的任何結(jié)果。
當(dāng)每個(gè)value值被測(cè)試,
如果value的值為if1,Decode 函數(shù)的結(jié)果是then1;
如果value等于if2,Decode函數(shù)結(jié)果是then2;等等。
事實(shí)上,可以給出多個(gè)if/then 配對(duì)。
如果value結(jié)果不等于給出的任何配對(duì)時(shí),Decode 結(jié)果就返回else 。
需要注意的是,這里的if、then及else 都可以是函數(shù)或計(jì)算表達(dá)式。
總結(jié)
- 上一篇: C语言实现动画控制
- 下一篇: 在Oracle中CHAR,NCHAR,V