如何在Oracle中对不同的数据类型列使用unpivot()

Nwn*_*Nwn 1 sql oracle

在表1中,列的数据类型如下,

category1 VARCHAR2(20 CHAR)
category2 VARCHAR2(20 CHAR)
category3 NUMBER
Run Code Online (Sandbox Code Playgroud)

我想通过使用unpivot()将所有category1,category2和category3设置为category类下来创建视图.

select
ID,
CATEGORY,   
REASON  
from  table1  
 unpivot(
        REASON for CATEGORY in(catgory1,category2,category3)
        );
Run Code Online (Sandbox Code Playgroud)

当我尝试执行此查询时,它显示以下错误,

表达式必须与相应的表达式具有相同的数据类型

Mr.*_*ale 5

因为category3是表中的NUMERIC数据类型,所以将其更改为Varchar或Char.

        select
        ID,
        CATEGORY,   
        REASON  
        from 
        (
        select  
        ID,
        category1,category2,TO_CHAR(category3)category3
        from table1  
        )a
        unpivot(
                REASON for CATEGORY in(category1,category2,category3)
                )
Run Code Online (Sandbox Code Playgroud)