将列转换为行或创建视图表列名作为值

时间:2017-08-22 05:06:24

标签: sql oracle pivot-table

我创建了一个表tvc

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

和另一个表uvc

CREATE  TABLE uvc( uname  varchar(10) );

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

  • tvcid
  • tvcname

3 个答案:

答案 0 :(得分:2)

您只需为此创建视图,而不是创建单独的表:

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

答案 1 :(得分:0)

  1. 如何将数据插入uvc表?

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

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

  2. 如何从uvc创建视图tvc

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

答案 2 :(得分:0)

你可以这样试试:

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