使用UNION时的Oracle类型

时间:2013-04-10 12:37:25

标签: sql oracle union

我目前正在从同一架构中的2个oracle表中选择数据。 这里的问题与类型有关。我的查询如下:

问题是oracle告诉我“ORA-01790:表达式必须与对应的表达式具有相同的数据类型” 并指出EFF年份。

eff_year字段在数据库中的类型为number(4)

report_date字段在数据库中的日期类型为

如何将report_date转换为数字?

我尝试了TO_NUMBER(report_date),但这给了我一个错误ORA-01722:无效的数字

SELECT 'Texture' MEASURE,
eff_year
FROM condition 
WHERE linear_id='004'
GROUP BY eff_year
UNION
SELECT 'Cracking' MEASURE,
TO_CHAR(report_date, 'YYYY') eff_year
FROM visual 
WHERE linear_id='004'
GROUP BY report_date

2 个答案:

答案 0 :(得分:2)

to_number(TO_CHAR(report_date, 'YYYY')) eff_year

答案 1 :(得分:0)

我会将它们转换为日期(to_date(eff_year,'YYYY')并使用普通的report_date),但使用你的ideea:

SELECT 'Texture' MEASURE,
eff_year
FROM condition 
WHERE linear_id='004'
GROUP BY eff_year

UNION ALL

SELECT 'Cracking' MEASURE,
to_number(TO_CHAR(report_date, 'YYYY')) eff_year
FROM visual 
WHERE linear_id='004'
GROUP BY TO_CHAR(report_date, 'YYYY')