日期:2014-05-17  浏览次数:20851 次

在写一句oracle 希望大家帮帮忙

外部传来两个参数col_num ase_desc
col_num 指定排序列(1 or 2 or 3) 
ase_desc指定升降序(0 or 1)
表A
col_1 col_2 col_3
1 c 2:22
4 a 15:43
3 j 14:03
...

order by 处如何写?
我现在用order by 
  case col_num 
  when 1 then col_1 
  when 2 then col_2
  when 3 then col_3
  end
参数ase_desc 放不进去

如果col_num 是2 ase_desc是1
结果就是
col_1 col_2 col_3
3 j 14:03
1 c 2:22
4 a 15:43
...

------解决方案--------------------
降序为desc,升序是不是ase记不清了,试一下:

select * from test order by decode(col_num,1,col_1,2,col_2,col_3) decode(ase_desc,1,desc,ase);