我需要从4个不同的字段中提取年份,将值转换为数字,然后将这些值与另一个值进行比较。我得到的错误是"不一致的数据类型:预期NUMBER得到DATE"。显然,我将年份改为数字的尝试无效。我的错误在哪里?
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
);
答案 0 :(得分:4)
XmR_Plot + stat_QC(method = "XmR", stand.dev = c(2, 3))
生成一个数字,因此您可以简化:
extract()
为:
TO_NUMBER(EXTRACT(year FROM pu.C38_UPDT_HEAT)) "yr_ht_updtd"
我不知道什么数据类型EXTRACT(year FROM pu.C38_UPDT_HEAT) as "yr_ht_updtd"
。如果是数字,则重复提取:
pu.c26_year_built
答案 1 :(得分:1)
使用extract来更改select语句中显示的内容与where子句中的内容不同。你应该只需要在where子句中做同样的事情。
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 > TO_NUMBER(EXTRACT(year FROM pu.C38_UPDT_HEAT)) or
pu.c26_year_built > TO_NUMBER(EXTRACT(year FROM pu.C35_UPDT_PLUMB)) or
pu.c26_year_built > TO_NUMBER(EXTRACT(year FROM pu.C34_UPDT_WIRE)) or
pu.c26_year_built > TO_NUMBER(EXTRACT(year FROM pu.C22_UPDT_ROOF))
);