我有一张名为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
我在这里做错了什么?
答案 0 :(得分:1)
问题是您正在尝试UNPIVOT
不同数据类型的列。所有未分配的值必须相同,类似于使用UNION
或UNION ALL
查询时,列中的每个值必须具有相同的数据类型。
由于RM_ID
列是number
而其他列是varchar2
,因此您需要使用子查询来执行cast()
{ {1}}栏:
RM_ID
请参阅SQL Fiddle with Demo语法