【问题标题】:Pivot column to row or create view table column name as value将列透视到行或创建视图表列名称作为值
【发布时间】:2017-08-22 05:06:23
【问题描述】:

我已经创建了一个表 tvc

CREATE TABLE  tvc(tvcid number(10), tvcname  varchar2(15));

还有另一个表uvc

CREATE  TABLE uvc( uname  varchar(10) );

如何将数据插入到 uvc 表或从 tvc 表列名创建视图 uvc?

  • tvcid
  • 电视名称

【问题讨论】:

    标签: sql oracle pivot-table


    【解决方案1】:

    您可以简单地为此创建视图,而不是创建单独的表:

    CREATE view uvc
    AS
    SELECT tvcid as ID,
           tvcname as Name
    FROM   tvc
    

    【讨论】:

      【解决方案2】:
      1. 如何将数据插入uvc 表中?

        INSERT INTO uvc (uname)
        SELECT tvc.tvcname 
        FROM tvc 
        [WHERE ..some conditions..]
        

        请注意 tvc.tvcnameuvc.uname 类型不匹配,因此您应该更改 uvc.uname 数据类型为varchar2(15) 以避免错误。

      2. 如何从tvc 创建视图uvc

        CREATE VIEW uvc AS
        SELECT tvc.tvcname uname
        FROM tvc
        [WHERE ..some conditions..];
        

      【讨论】:

      • @khan 你当然可以,但如果你的tvcname 超过 10 个符号,你会得到一个错误
      • 我使用了哪些条件?
      • WHERE 子句是可选的,如果不需要,可以不使用。
      • 实际上我想插入列名而不是列数据,例如 tvcid tvcname 到 uvc。
      【解决方案3】:

      你可以这样试试:

      with tb1 AS(
           select 1 tvcid, 'gg' tvcname from dual
           union all
           select 2 tvcid, 'gg2' tvcname from dual
      ), tb2 as (
       select  'gg' uname from dual
       union all
       select  'gg' uname from dual
      )
      SELECT DISTINCT * FROM
      TB1 LEFT JOIN TB2 ON 1 = 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-10
        • 2019-12-22
        • 1970-01-01
        • 2015-08-27
        • 1970-01-01
        • 2017-10-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多