首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

SQL语句有关问题 求解决

2012-02-16 
SQL语句问题 求解决情况一:ls_year String(Year(Today()))ls_string convert(int,( + ls_year + -y

SQL语句问题 求解决
情况一:
ls_year = String(Year(Today()))
ls_string = "convert(int,(" + ls_year + "-year(csny)+1)/10)"
ls_sql = "SELECT CASE " + ls_string + " WHEN 0 THEN '未知' WHEN " + ls_string + " > 5 THEN '60岁以上' WHEN " + ls_string + " BETWEEN 4 and 5 THEN '50岁-59岁' WHEN " + ls_string + " BETWEEN 3 and 4 THEN '40岁-49岁' WHEN " + ls_string + " BETWEEN 2 and 3 THEN '30岁-39岁' WHEN " + ls_string + " BETWEEN 1 and 2 THEN '20岁-29岁' WHEN " + ls_string + " < 1 THEN '20岁以下' END as xm,count(id) as rs from dm_ry where sfty = '0' group by " + ls_string
提示: sql语法生成失败:第1行:'>'附近有语法错误


情况二:
ls_year = String(Year(Today()))
ls_string = ls_year + "-year(rzrq)+1"
ls_sql = "SELECT CASE " + ls_string + " WHEN (" + ls_string + ") <> 0 THEN " + ls_string + " ELSE '未知' END as xm,count(id) as rs from dm_ry where sfty = '0' group by " + ls_string
提示: sql语法生成失败:第1行:'<'附近有语法错误


情况三:
ls_sql = "SELECT CASE " + is_id + " WHEN NULL THEN '未知' ELSE " + is_id + " END as xm,count(id) as rs from dm_ry where sfty = '0' group by " + is_id
成功!

前两个情况要怎么解决呢?

[解决办法]
楼主case的用法不对:
情况一:
ls_year = String(Year(Today()))
ls_string = "convert(int,(" + ls_year + "-year(csny)+1)/10)"
ls_sql = "SELECT CASE WHEN " + ls_string + " = 0 THEN '未知' WHEN " + ls_string + " > 5 THEN '60岁以上' WHEN " + ls_string + " BETWEEN 4 and 5 THEN '50岁-59岁' WHEN " + ls_string + " BETWEEN 3 and 4 THEN '40岁-49岁' WHEN " + ls_string + " BETWEEN 2 and 3 THEN '30岁-39岁' WHEN " + ls_string + " BETWEEN 1 and 2 THEN '20岁-29岁' WHEN " + ls_string + " < 1 THEN '20岁以下' END as xm,count(id) as rs from dm_ry where sfty = '0' group by " + ls_string


[解决办法]
case只能是如下两种方式之一,而不能混杂.

SQL code
case 表达式1 when 值1 then 表达式2 when 值2 then 表达式3 else 表达式n end--或case when 表达式1 then 值1 when 表达式2 then 值2 else 值n end 

热点排行