所有的日期字段都为字符串
报错为expected char got number
从报错分析来看是类型不一样,也就是*100不是数字值,但是第二段代码却过了,这就很不理解了,如果真的类型不一样第二段*100也会报错才对
下面的这两处为什么会有冲突
select
case
when sysdate < to_date(cih.begin_year || '-' || cih.begin_month || '-01', 'yyyy-MM-dd')
then '0.0'
when cih2.time2<sysdate
then '100'
when
cih2.time2-to_date(cih.begin_year || '-' || cih.begin_month || '-01', 'yyyy-MM-dd')=0
then '0.0' --这里
else (((to_date(cih.begin_year || '-' || cih.begin_month || '-01',
'yyyy-MM-dd')-sysdate)+1)/(cih2.time2-to_date(cih.begin_year || '-' ||
cih.begin_month || '-01', 'yyyy-MM-dd'))*100) --这里,报错的地方这个100下面有下划线
end 项目总体进度
from cbm_item_headers cih,
(select a.*,
(case
when To_number(a.end_month, '99') < 12
then to_date(a.end_year || '-' || to_char(cih2.end_month2,'99') || '-01', 'yyyy-MM-dd')
else to_date(to_char(cih2.end_year2,'9999') || '-' || '01' || '-01', 'yyyy-MM-dd') end) time2
from cbm_item_headers a,
(select
item_code,to_number(end_year, '9999') + 1
end_year2,to_number(end_month, '99')+1 end_month2 from cbm_item_headers)
cih2 where a.item_code=cih2.item_code) cih2
where cih.item_code=cih2.item_code
我去掉这两处其中一处就可以运行
select
(((to_date(cih.begin_year
|| '-' || cih.begin_month || '-01',
'yyyy-MM-dd')-sysdate)+1)/(cih2.time2-to_date(cih.begin_year || '-' ||
cih.begin_month || '-01', 'yyyy-MM-dd'))*100) --去掉了case就可以运行
from cbm_item_headers cih,(select a.*,
(case
when To_number(a.end_month, '99') < 12
then to_date(a.end_year || '-' || to_char(cih2.end_month2,'99') || '-01', 'yyyy-MM-dd')
else to_date(to_char(cih2.end_year2,'9999') || '-' || '01' || '-01', 'yyyy-MM-dd') end) time2
from cbm_item_headers a,
(select
item_code,to_number(end_year, '9999') + 1
end_year2,to_number(end_month, '99')+1 end_month2 from cbm_item_headers)
cih2 where a.item_code=cih2.item_code) cih2
where cih.item_code=cih2.item_code
----------------------------------------------------------
select
case
when sysdate < to_date(cih.begin_year || '-' || cih.begin_month || '-01', 'yyyy-MM-dd')
then '0.0'
when cih2.time2<sysdate
then '100'
when
cih2.time2-to_date(cih.begin_year || '-' || cih.begin_month || '-01', 'yyyy-MM-dd')=0
then '0.0' --去掉了else就可以运行
end 项目总体进度
from cbm_item_headers cih,
(select a.*,
(case
when To_number(a.end_month, '99') < 12
then to_date(a.end_year || '-' || to_char(cih2.end_month2,'99') || '-01', 'yyyy-MM-dd')
else to_date(to_char(cih2.end_year2,'9999') || '-' || '01' || '-01', 'yyyy-MM-dd') end) time2
from cbm_item_headers a,
(select
item_code,to_number(end_year, '9999') + 1
end_year2,to_number(end_month, '99')+1 end_month2 from cbm_item_headers)
cih2 where a.item_code=cih2.item_code) cih2
where cih.item_code=cih2.item_code
NULL12345
相关分类