求高手,oracle一直报这个错误:ORA--00923 无法在应该出现from关键字的位置上找到它,如何解决
sql如下:selecta.id_no_sz工号,a.name_sz姓名,a.segment_no部门,a.dif_hours差异时数,a.actual_cardhour...
sql如下:select a.id_no_sz 工号,
a.name_sz 姓名,
a.segment_no 部门,
a.dif_hours 差异时数,
a.actual_cardhours 刷卡出勤时数,
a.intime 排班上班开始时间,
a.outtime 排班上班结束时间,
a.inactual 实际上班开始时间,
a.outactual 实际上班结束时间,
a.dayhours 排班出勤时数,
a.actual_day_hours 实际出勤时数,
a.segment_no_sz 部门代号,
a.segment_name 部门名称,
a.indate 到职日期,
a.outdate 离职日期,
a.period_master_no 计薪期间,
a.period_detail_no 期间每月,
a.day 考勤日,
a.trail_date 试用期间天数,
a.trail_date1 试用期满天数,
a.n_overtime_hour 平日加班计费(时),
a.s_overtime_hour 假日加班计费(时),
a.h_overtime_hour 法定加班计费(时),
a.b_overtime_hour 补休时数(时),
a.overtime_detail 加班明细,
a.night_days 夜班天数,
a.absence_detail 请假明细,
a.late_count 迟到(次),
a.early_count 早退(次),
a.forget_count 忘刷卡(次),
a.rest_year_hour 剩馀年休(时)
from chil_attend_day a, hr_personnel_base b
where a.id_no_sz = b.id_no_sz
and b.seg_segment_no = '4274'
and b.carding = '02'
假如用select * from 则不会报错,一加那些栏位就报错 展开
a.name_sz 姓名,
a.segment_no 部门,
a.dif_hours 差异时数,
a.actual_cardhours 刷卡出勤时数,
a.intime 排班上班开始时间,
a.outtime 排班上班结束时间,
a.inactual 实际上班开始时间,
a.outactual 实际上班结束时间,
a.dayhours 排班出勤时数,
a.actual_day_hours 实际出勤时数,
a.segment_no_sz 部门代号,
a.segment_name 部门名称,
a.indate 到职日期,
a.outdate 离职日期,
a.period_master_no 计薪期间,
a.period_detail_no 期间每月,
a.day 考勤日,
a.trail_date 试用期间天数,
a.trail_date1 试用期满天数,
a.n_overtime_hour 平日加班计费(时),
a.s_overtime_hour 假日加班计费(时),
a.h_overtime_hour 法定加班计费(时),
a.b_overtime_hour 补休时数(时),
a.overtime_detail 加班明细,
a.night_days 夜班天数,
a.absence_detail 请假明细,
a.late_count 迟到(次),
a.early_count 早退(次),
a.forget_count 忘刷卡(次),
a.rest_year_hour 剩馀年休(时)
from chil_attend_day a, hr_personnel_base b
where a.id_no_sz = b.id_no_sz
and b.seg_segment_no = '4274'
and b.carding = '02'
假如用select * from 则不会报错,一加那些栏位就报错 展开
5个回答
展开全部
展开全部
既然是这样的话,那就一步步的推敲下去,你不也知道问题出在哪里了吗,用*代替的话就不报错,那也就是说你的这条sql语句无论是从语法上还是逻辑上来讲都是没问题的,但一旦改为具体的列就出现问题,那很显然就出列的问题了,而如果是某个(些)列定义出错的话,如引用不存在的列(列名写错的话),那么报的应该是00904的错误,而现在不是,那么也就排除了这种情况,你观察一下,你为每一列定义别名存在一个什么突出的特点,有些列的表名用上了括号,而你有没有为该别名用一对双引号来标示出来,那么在编译的时候就会识别不了这个括号,这就如同你在定义别名的时候如果存在空格,就必须用上一对双引号来括起来,但我们在平时的书写中,无论你定义的别名是什么最好都用上一对双引号以示区分。
追问
谢了。按照你的方法推敲找到原因了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(时),(次)这样的小括号的问题。被解析错了。
把小括号去掉,或者把那些重命名用引号引起来试试。
把小括号去掉,或者把那些重命名用引号引起来试试。
追问
()没问题的。。把这几个注释掉。。运行还是一样的错误
追答
一定是括号的问题,另外,你把重命名的字段名都用引号引起来。
另外,您执行
select a.id_no_sz 工号,
a.name_sz 姓名,
a.segment_no 部门,
a.dif_hours 差异时数,
a.actual_cardhours 刷卡出勤时数,
a.intime 排班上班开始时间,
a.outtime 排班上班结束时间,
a.inactual 实际上班开始时间,
a.outactual 实际上班结束时间,
a.dayhours 排班出勤时数,
a.actual_day_hours 实际出勤时数,
a.segment_no_sz 部门代号,
a.segment_name 部门名称,
a.indate 到职日期,
a.outdate 离职日期,
a.period_master_no 计薪期间,
a.period_detail_no 期间每月,
a.day 考勤日,
a.trail_date 试用期间天数,
a.trail_date1 试用期满天数,
a.overtime_detail 加班明细,
a.night_days 夜班天数,
a.absence_detail 请假明细
from chil_attend_day a, hr_personnel_base b
where a.id_no_sz = b.id_no_sz
and b.seg_segment_no = '4274'
and b.carding = '02'
看看是否报错?
把重命名引起来应该是没问题的,但是ORACLE,即使是不引起来,应该也是可以的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请每个中人别名最好加上双引号.这样基本就不会出现了.
追问
什么意思~~用select * from 这样的形式就不会报错。。。。。一加a.id_no_sz 这种就报那错误
追答
select a.id_no_sz "工号" --像这样
from chil_attend_day a, hr_personnel_base b
where a.id_no_sz = b.id_no_sz
and b.seg_segment_no = '4274'
and b.carding = '02'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加了那几个栏位报错了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |