标识符无效

标识符无效.pngselect
tasks_reporting_day,
to_char(tasks_reporting_day, 'yyyy') year,
to_char(tasks_reporting_day, 'MM') month,
tO_CHAR(tasks_reporting_day,'W')  week
from TASK_MAINTENANCE
${if(len(年)==0,""," and TO_CHAR(year, 'yyyy') = '"+年+ "'")}
${if(len(月)==0,""," and TO_CHAR(month, 'MM') = '"+月+ "'")}
${if(len(周次)==0,""," and TO_CHAR(week, 'W') = '"+周次+ "'")}



各位大神看看我的sql,我觉得没啥毛病啊,年月是根据tasks_reporting_day这个字段拆分出来的标识符无效.png

FineReport 用户kWEye3931 发布于 2020-5-18 16:54 (编辑于 2020-5-18 17:03)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
snrtuemcLv8专家互助
发布于2020-5-18 16:58(编辑于 2020-5-18 17:10)

select
tasks_reporting_day,
to_char(tasks_reporting_day, 'yyyy') year,
to_char(tasks_reporting_day, 'MM') month,
tO_CHAR(tasks_reporting_day,'W')  week
from TASK_MAINTENANCE

where 1=1
${if(len(年)==0,""," and TO_CHAR(tasks_reporting_day, 'yyyy') = '"+年+ "'")}
${if(len(月)==0,""," and TO_CHAR(tasks_reporting_day, 'MM') = '"+月+ "'")}
${if(len(周次)==0,""," and TO_CHAR(tasks_reporting_day, 'W') = '"+周次+ "'")}


如果数据库支持,请参照上面写法,不能直接取自定义数据列名


  • 用户kWEye3931 用户kWEye3931(提问者) 我试了试数据预览,但是年月数据为空,如上图
    2020-05-18 17:04 
  • snrtuemc snrtuemc 回复 用户kWEye3931(提问者) oracle数据库你的to_char函数是对的,你的那边数据为空了
    2020-05-18 17:08 
  • snrtuemc snrtuemc 回复 用户kWEye3931(提问者) 知道了,你的sql少写了条件,参看修改答案
    2020-05-18 17:09 
最佳回答
0
张洪威Lv6高级互助
发布于2020-5-18 16:56

${if(len(年)==0,""," and TO_CHAR(year, 'yyyy') = '"+年+ "'")}
${if(len(月)==0,""," and TO_CHAR(month, 'MM') = '"+月+ "'")}
${if(len(周次)==0,""," and TO_CHAR(week, 'W') = '"+周次+ "'")}

这里面的TO_CHAR(week, 'W')  这个是想干嘛呢?

  • cherry团子 cherry团子 他想取周
    2020-05-18 16:57 
  • 张洪威 张洪威 回复 cherry团子 就是好奇他是不是想直接取上面的别名,所以标识符无效了。
    2020-05-18 16:59 
  • 用户kWEye3931 用户kWEye3931(提问者) 算的是周,比如今天是五月十八号,今天是这个月的第三周
    2020-05-18 16:59 
  • 用户kWEye3931 用户kWEye3931(提问者) 回复 张洪威 我觉得也是这样,表必须真实存在才能用吗?
    2020-05-18 16:59 
  • 张洪威 张洪威 回复 用户kWEye3931(提问者) 你要这样取那就外面嵌套一层select,然后再用这个判断,直接用是取不到刚加的别名的。
    2020-05-18 17:00 
最佳回答
0
cherry团子Lv6中级互助
发布于2020-5-18 16:59

selecttasks_reporting_day,to_char(tasks_reporting_day, 'yyyy') year,to_char(tasks_reporting_day, 'MM') month,--tO_CHAR(tasks_reporting_day,'W')  weekfrom TASK_MAINTENANCE${if(len(年)==0,""," and TO_CHAR(tasks_reporting_day, 'yyyy') = '"+年+ "'")}${if(len(月)==0,""," and TO_CHAR(tasks_reporting_day, 'MM') = '"+月+ "'")}
下面这个我不知道能不能取--${if(len(周次)==0,""," and TO_CHAR(week, 'W') = '"+周次+ "'")}


  • 4关注人数
  • 708浏览人数
  • 最后回答于:2020-5-18 17:10
    请选择关闭问题的原因
    确定 取消
    返回顶部