Мне нужно извлечь год из 4 различных полей, преобразовать значения в числа, а затем сравнить эти значения с другим значением. Я получаю сообщение об ошибке «Несоответствующие типы данных: ожидаемое число получило дату». Очевидно, что моя попытка изменить год на число не работает. Где моя ошибка?
select pc.a00_pnum
,pc.a06_edition
,pu.c26_year_built
,TO_NUMBER(EXTRACT(year FROM pu.C38_UPDT_HEAT)) "yr_ht_updtd"
,TO_NUMBER(EXTRACT(year FROM pu.C35_UPDT_PLUMB)) "yr_plumb_updtd"
,TO_NUMBER(EXTRACT(year FROM pu.C34_UPDT_WIRE)) "yr_wire_updtd"
,TO_NUMBER(EXTRACT(year FROM pu.C22_UPDT_ROOF)) "yr_roof_updtd"
from tfprpt.pcommon pc
join tfprpt.punit pu
on pc.a00_pnum = pu.a00_pnum
and pc.a06_edition = pu.a06_edition
where pc.a06_edition = (select max(pc2.a06_edition) from tfprpt.pcommon pc2 where pc2.a00_pnum = pc.a00_pnum) and
pc.a09_xdate >= '11-May-18' and
pc.d14_status = 'I' and
(
pu.c26_year_built > pu.C38_UPDT_HEAT or
pu.c26_year_built > pu.C35_UPDT_PLUMB or
pu.c26_year_built > pu.C34_UPDT_WIRE or
pu.c26_year_built > pu.C22_UPDT_ROOF
);