如:decode(ex1,ex2,ex3,ex4); [这里的ex1 ,ex3代表的是列,ex2代表的是列的值,ex4代表的自定义值]
表示:将ex1列里的值和ex2列的值进行比较,如果相同,则反回对应ex1某列的行的ex3列的值,不同则返回ex4 ,如果数据固定,ex4可以省略,if....exle语句 如果ex1的值=ex2则返回ex3,否则返回ex4
如:
select t.row_num , t.col_id , t.Col_Value
from brpms.tb_rpt_data t
所查询的数据为:
ROW_NUM COL_ID COL_VALUE
4 2 刘家峡水电厂
4 3 刘家1
4 4 刘家2
5 2 刘家3
5 3 刘家4
5 4 刘家5
期望的数据为根据COL_ID值相同分成N列如下所示:ABC代表234
ROW_NUM A B C
4 刘家峡水电厂 刘家1 刘家2
5 刘家3 刘家4 刘家5
语句为:
select
row_num,
max( decode(col_id,'2',col_value) ) as a ,
max( decode(col_id,'3',col_value) ) as b ,
max( decode(col_id,'4',col_value) ) as c
from brpms.tb_rpt_data
group by row_num