以以下查询为例:
select p.product_id, p.product_name,
product_type as product_type,
from products
group by p.product_id, p.product_name
union
select p.product_id, p.product_name,
cast(collect(coalesce(product_type, decode(product_description,null,'DESCR' || '-' product_description) as my_type) as product_type,
from products
group by p.product_id, p.product_name
第一个查询中的 select 语句将 product_type 作为 varchar 返回,而在第二个查询中 product_type 的类型为 my_type。这导致 ORA-01790: 表达式必须具有与相应表达式相同的数据类型,因为数据类型不相同。
是否可以将第一个查询中的 product_type 转换为 my_type 类型?
我尝试更改第一个查询,如下所示,但没有运气。
select p.product_id, p.product_name,
cast(product_type as my_type) as product_type,
decode(product_source_location, null, 'NO_SOURCE', product_source_location)
from products
group by p.product_id, p.product_name
编辑
my_type 定义为'TYPE "my_type" AS TABLE OF varchar2(4000)'