WHERE条件中用DECODE,提示有错误,错误在哪里。
and decode(Vctn_size,'20','a.CTN_Size<'30'','40','a.CTN_Size>=30 and a.CTN_Size<=45','45','a.CTN_Size>45')Vctn_size是变量,等于20时,条件是'a.CTN_Size<'30',提示缺少右括号,请问错在哪里,怎么改。
and decode(Vctn_size,'20','a.CTN_Size<'30'','40','a.CTN_Size>=30 and a.CTN_Size<=45','45','a.CTN_Size>45')Vctn_size是变量,等于20时,条件是'a.CTN_Size<'30',提示缺少右括号,请问错在哪里,怎么改。
解决方案 »
- 图方便装了一个快捷版11G 现在像卸载 怎么办
- oracle 11g?管理员,超级管理员
- 数值型如何转换成字符型
- oracle 命令行未正确结束
- 急啊!!!!!!FORMS和REPORTS打不开了,求助!!!!!
- 如何使用vc通过oci调用oracle中的function?
- 在服务里启动不了OracleDBConsoleorcl
- 高手,在Oracle数据库中,用SQL+语句将用户为 U1 的表T导出成.exp或.sql文件!谢谢
- 新手提问
- SQL developer中该如何设置指针,从而查看变量值
- 菜鸟请求帮助!!!/lsnrctl start时出错了
- Oracle 10g BI Discoverer 培训
lv_sql varchar2(1000);
sql_command varchar2(5000);
cursor cur is select 课程 from TB group by 课程;
begin
sql_command := 'select 姓名';
for i in cur loop
-- decode 写法
sql_command := sql_command||' , max(decode(课程,'''||i.课程||''', 分数,0)) ' ||i.课程;
-- case when 写法
sql_command := sql_command||',max(case 课程 when '''||i.课程||''' then 分数 else 0 end) ' || i.课程;
end loop;
sql_command := sql_command||' from TB group by 姓名';
lv_sql := 'insert into temp_ss ' || sql_command;
dbms_output.put_line(sql_command);
execute immediate lv_sql;
end;
这里边有decode 的用法,按照例子把你的填过来就可以了
AND ((Vctn_size = '20' AND a.CTN_Size < 30)
OR (Vctn_size = '40' AND a.CTN_Size >= 30 and a.CTN_Size <=45)
OR (Vctn_size = 45 AND a.CTN_Size>45))
性能不能保证哦 :-)