使用下面的sql我得到错误我的数据类型不相等.C1是varchar,C2是数字.我发现数据透视表必须具有相同的数据类型,但是如何在使用下面的case语句时将数字转换为varachar?
SELECT userID,
CASE columnname
WHEN 'c1' THEN
'Column1'
WHEN 'c2' THEN
'Column2'
END AS
columnname,
CASE columnname
WHEN 'c1' THEN
'1'
WHEN 'c2' THEN
'2'
END AS
"Extra info",
columnresult
FROM mytable unpivot( columnresult FOR columnname IN(c1,c2)) u
Run Code Online (Sandbox Code Playgroud)
如果数据类型不同,则需要在UNPIVOT之前将它们转换为相同类型.代码将类似于:
SELECT userID,
CASE columnname
WHEN 'c1' THEN 'Column1'
WHEN 'c2' THEN 'Column2'
END AS columnname,
CASE columnname
WHEN 'c1' THEN '1'
WHEN 'c2' THEN '2'
END AS "Extra info",
columnresult
FROM
(
select userid, c1, cast(c2 as varchar2(10)) c2
from mytable
)
unpivot
(
columnresult
FOR columnname IN(c1,c2)
) u;
Run Code Online (Sandbox Code Playgroud)
区别在于您现在有一个子查询,用于在将数据移植到同一列之前选择c1并将c2列转换为相同的数据类型.
| 归档时间: |
|
| 查看次数: |
5942 次 |
| 最近记录: |