select t.name as 名称,
nvl(t.face, 0) as 面值
from st_order t group t by t.name,t.face
order by case
when v_orderby = 1 then
名称
when v_orderby = 2 then
面值
end
面值是number类型,名称是char ,这个面值排序有问题,to_char后排出来的不对,谁能帮解决一下
nvl(t.face, 0) as 面值
from st_order t group t by t.name,t.face
order by case
when v_orderby = 1 then
名称
when v_orderby = 2 then
面值
end
面值是number类型,名称是char ,这个面值排序有问题,to_char后排出来的不对,谁能帮解决一下
解决方案 »
- oracle中字符串更新到blob字段中
- APEX安装中文问题
- 关于如何修改 SCAN VIP
- 关于SQLPLUS和PL/SQL的问题
- 急需oracle8下的oci.lib,oci.h文件,望能发给我一份
- 把MS-SQL Server 一条语句翻译成oracle的送100分.
- 这个存储过程出错了,怎么修改?
- oracle乱码问题--100分
- 程序返回ORA-24334:no descriptor for this position是怎么回事?怎么处理?
- 请问哪里有免费下载《ORACLE8 PL/SQL程序设计》这本书的?(虽然有很多网站提供下载,可是都无法正确下载)
- 不可思议的sql问题!!!!!
- 问2个oracle的问题:1、如何在create table语句中引入外键?2、如何生成已存在的表的创建语句?
...
order by
...
to_number(面值)
...
这个呢有点不明白你什么意思,你这个SQL写的就有些问题
v_orderby 是存储过程传的参数,前台可以选择根据什么排序,有的是char类型,有的是number类型,用case when ..then ..end 语句他们排序的类型就必须一致才行,我to_char了一下排出来就不对,因为前面已经有char排的了,to_number执行不了
我做的是一个统计,GROUP by t.face 是根据面值分组的,查询不同面值的数据
这个呢有点不明白你什么意思,你这个SQL写的就有些问题
我做的是一个统计,GROUP by t.face 是根据面值分组的,查询不同面值的数据
那你MIN就没有用了好像,
SELECT * FROM scott.emp e ORDER BY CASE WHEN 1=1 THEN TO_NUMBER(e.empno) ELSE TO_NUMBER(e.ename) END ;
不要用case语句,用动态sql能解决问题,例如declare
l_order varchar2(100) := 'name';
l_sqltxt varchar2(1000);
type name_table is table of varchar2(100);
type value_table is table of number;
l_nameTbl name_table;
l_valueTbl value_table;
begin
l_sqltxt := 'select t.name, nvl(t.face, 0) from st_order t group by t.name,t.face order by :1';
execute immediate l_sqltxt bulk collect into l_nameTbl, l_valueTbl using l_order;
end;