2013-04-10 3 views
0

В настоящее время я работаю над выбором данных из 2 таблиц oracle в той же схеме. Проблема здесь связана с типами. Мой запрос ниже:Типы Oracle при использовании UNION

В чем проблема: оракул говорит мне «ORA-01790: выражение должно иметь такой же тип данных, что и соответствующее выражение» И указывая на поле EFF year.

eff_year поле номера типа (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
to_number(TO_CHAR(report_date, 'YYYY')) eff_year 
+0

Это работает - Спасибо! Я могу отметить только правильные за 8 минут :) – 2013-04-10 12:44:25

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')