Результаты выше совпадают с последовательностью столбцов в вашей таблице?потому что оракул строг в порядках столбцов.этот пример ниже выдает ошибку:
create table test1_1790 (
col_a varchar2(30),
col_b number,
col_c date);
create table test2_1790 (
col_a varchar2(30),
col_c date,
col_b number);
select * from test1_1790
union all
select * from test2_1790;
ORA-01790: выражение должно иметь тот же тип данных, что и соответствующее выражение
Как вы видите, основной причиной ошибки являетсяв несоответствующем порядке столбцов, что подразумевается использованием * в качестве спецификатора списка столбцов.Этого типа ошибок можно легко избежать, введя список столбцов в явном виде:
select col_a, col_b, col_c from test1_1790
union all
select col_a, col_b, col_c from test2_1790;
Более частый сценарий этой ошибки - случайная замена (или смещение) двух или более столбцов в списке SELECT:
select col_a, col_b, col_c from test1_1790
union all
select col_a, col_c, col_b from test2_1790;
ИЛИ, если вышеперечисленное не решит вашу проблему, как насчет создания ALIAS
в столбцах следующим образом: (запрос не совпадаеткак ваш, но суть в том, как добавить псевдоним в столбце.)
SELECT id_table_a,
desc_table_a,
table_b.id_user as iUserID,
table_c.field as iField
UNION
SELECT id_table_a,
desc_table_a,
table_c.id_user as iUserID,
table_c.field as iField
надеюсь, это поможет.