假设表A有以下字段:
id, key1 ,key2, key3, key4, key5, type
id和type不能为空,其他均可为空!!
查询条件是:
当type="B"时:
1.若key1和key有值时,按key1 升序, key2 升序排序
2.若key5有值时,按key5升序排序
说明:key为key2+key3+key4
请问这个SQL该如何写
----------------------------------------------------
应该是这种情况,条件1和2同时满足时两个条件都执行,要按3个排
若是都没有值则都不行即不排,若只满足其中一个则按其中一个执行
其实key就是key2,key3,key4的值得组合,我要查出id,key1,key,key5,type请问这该怎么写!!!
id, key1 ,key2, key3, key4, key5, type
id和type不能为空,其他均可为空!!
查询条件是:
当type="B"时:
1.若key1和key有值时,按key1 升序, key2 升序排序
2.若key5有值时,按key5升序排序
说明:key为key2+key3+key4
请问这个SQL该如何写
----------------------------------------------------
应该是这种情况,条件1和2同时满足时两个条件都执行,要按3个排
若是都没有值则都不行即不排,若只满足其中一个则按其中一个执行
其实key就是key2,key3,key4的值得组合,我要查出id,key1,key,key5,type请问这该怎么写!!!
select * from tableA where 1=1 order by decode(type,'B',decode(key1*key*key5,0,decode(key1*key,0,decode(key5,0,null,key5),key1||','||key2),key1||','||key2||','||key5);
SELECT *
FROM A
ORDER BY KEY1, DECODE(KEY2+KEY3+KEY4,NULL,NULL,KEY2), KEY5;
WHERE type = 'B'
ORDER BY
decode(key1||key,null,decode(key5,null,null,key5),decode(key5,null,key1||','||key2,key1||','||key2||','||key5));这样可否!!!