现有一张表,字段如下
urid,stringvalue,numbervalue,boolvalue表里有如下数据:
1, null, 10, null;
2,'test',null,null;
3, null,null,1;现在要通过一个语句得到如下结果1,10
2,test
3,1请各位大侠帮忙
urid,stringvalue,numbervalue,boolvalue表里有如下数据:
1, null, 10, null;
2,'test',null,null;
3, null,null,1;现在要通过一个语句得到如下结果1,10
2,test
3,1请各位大侠帮忙
||case when endnumbervalue is null then '' else ','||endnumbervalue end
||case when boolvalue is null then '' else ','||boolvalue
from table
from table
select urid ||case when stringvalue is null then '' else ',' ||stringvalue end
||case when endnumbervalue is null then '' else ',' ||numbervalue end
||case when boolvalue is null then '' else ',' ||boolvalue
from table
我没有说明清楚,我的意思是这样的:取出来的数据有两列:
如
urid,paramvalue数据如下
1,10
2,test
3,1 paramvalue这一列的值是从stringvalue,numbervalue,boolvalue三列中其中有值的那一列取出来的
select urid,nvl(stringvalue,nvl(numbervalue,boolvalue
)) from table
---------- ---------- ---------- ----------
1 10
2 test
3 1已选择3行。SQL> select a,b||c||d from ta; A B||C||D
---------- ------------------------------
1 10
2 test
3 1已选择3行。
select urid,
decode(nvl(stringvalue, ''),
'',
decode(nvl(to_char(numbervalue), ''),
'',
to_char(boolvalue),
to_char(numbervalue)),
stringvalue)
from (select 1 urid, null stringvalue, 10 numbervalue, null boolvalue
from dual
union
select 2, 'test', null, null
from dual
union
select 3, null, null, 1 from dual)
¦ ¦case 换成 2个|