Unpivot表脚本错误

时间:2012-11-15 07:38:40

标签: oracle unpivot

我有一张名为rp_resolution_master的表。

CREATE TABLE "REQUEST_PORTAL"."RP_RESOLUTION_MASTER" 
   ( "RM_ID" NUMBER, 
    "SR_ID" NUMBER, 
    "REQUEST_STATUS" VARCHAR2(200 BYTE), 
    "COMMENTS" VARCHAR2(4000 BYTE), 
    "UPDATED_ON" DATE, 
    "UPDATED_BY" VARCHAR2(500 BYTE), 
    "INTERNAL_COMMUNICATION" VARCHAR2(1 BYTE) DEFAULT 'N'
   );

我正在对此运行一个不透明的查询。

 SELECT *
   From Rp_Resolution_Master
Unpivot INCLUDE NULLS ( 
          value For measures In ( rm_id, request_status, Comments
                                , updated_by, internal_communication)
                      ) 
 where sr_id = 1004707 
   And Updated_On = ( Select Max(Updated_On) 
                        From Rp_Resolution_Master 
                       Where Sr_Id = 1004707);

但是我收到了错误

  

ORA-01790:表达式必须与对应的数据类型相同   表达   01790. 00000 - “表达式必须与对应的表达式具有相同的数据类型”   *原因:
  *动作:行错误:3列:51

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

问题是您正在尝试UNPIVOT不同数据类型的列。所有未分配的值必须相同,类似于使用UNIONUNION ALL查询时,列中的每个值必须具有相同的数据类型。

由于RM_ID列是number而其他列是varchar2,因此您需要使用子查询来执行cast() { {1}}栏:

RM_ID

请参阅SQL Fiddle with Demo语法