【问题标题】:unpivot table different datatypes with cases用案例反透视表不同的数据类型
【发布时间】:2015-05-06 14:34:42
【问题描述】:

使用下面的 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

【问题讨论】:

    标签: sql plsql unpivot


    【解决方案1】:

    如果数据类型不同,则需要在 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;
    

    不同之处在于您现在有一个子查询,用于选择 c1c2 列并将其转换为相同的数据类型,然后再将数据取消透视到同一列中。

    【讨论】:

      猜你喜欢
      • 2016-05-31
      • 2012-09-27
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多