oracle select出错原因求助

来源:百度知道 编辑:UC知道 时间:2024/05/12 20:14:06
select a.aac001,a.aac003,a.aab001, c.aab004,a.aac006,a.aac007,b.aic162 ,d.aic263
from ac01 a,ic10 b,ab01 c,ic14 d
where b.aae116='1' and months_between(b.aic162,a.aac007)<='180'
and d.aae002='200901'
and a.aac001=b.aac001
and a.aab001=c.aab001
and a.aac001=d.aac001
order by aab001
上面语句可以运行,但是在SELECT后面加上months_between(b.aic162,a.aac007)后查询就出错.请问是什么原因?
出错语句如下:
select a.aac001,a.aac003,a.aab001, c.aab004,a.aac006,a.aac007,b.aic162 ,d.aic263 ,months_between(b.aic162,a.aac007)
from ac01 a,ic10 b,ab01 c,ic14 d
where b.aae116='1' and months_between(b.aic162,a.aac007)<='180'
and d.aae002='200901'
and a.aac001=b.aac001
and a.aab001=c.aab001
and a.aac001=d.aac001
order by aab001;

怎么是貌似社保类项目的数据库命名方式,呵呵ac01人员基本信息表,ab01单位基本信息表,aac007是不是生日啊

b.aic162,a.aac007都是什么类型?然后把错误号发上来。

这样看看不出来,也许有可能是你数据的问题
你可以把你ora报的错贴出来,也好知道到底是哪的问题
简单看,语法没问题,那个180加不加引号也不是主要问题

months_between(b.aic162,a.aac007) 这个函数的返回值不是string类型吧
把'180'左右的'去掉试试。
再一个,months_between 函数里面的参数应该都是日期类型的,
如果不是,就用命令转换一下,像这样
month_between(to_date(b.aic162),to_date(a.aac007)) <= 180
试试这个

180的引号去掉

没发现问题,报的什么错误啊?