在oracle中创建为select

时间:2009-11-19 13:47:03

标签: oracle

我对使用其他表格创建表格有一点疑问。

我的代码:

create table TB_OLAP_TELEFONIA as 

select   ID                AS LOG_ID,
         HORAFIM           AS LOG_HORA,
         DURACAO           AS LOG_DURA,
         TO_CHAR( HORAFIM, 'D')  AS LOG_DIA_SEMANA,
         TO_NUMBER( SUBSTR( NUMEROA, 3, 1 ) ) AS LOG_NUMA_TIPO,
         TO_NUMBER( SUBSTR( NUMEROA, 3, 1 ) ) AS LOG_NUMB_TIPO,
         SUBSTR( NUMEROA, 1, 2) ) AS LOG_NUMA_ESTADO,          
         SUBSTR( NUMEROA, 1, 2) ) AS LOG_NUMB_ESTADO

from     DADOS_COLUNA_OLAP

sintax是不正确的,我不记得在“as”位置使用什么用于为列提供正确的名称。

一些好的胶水? 谢谢!

2 个答案:

答案 0 :(得分:3)

CTAS语法是正确的。你的问题是一个'cut'n'paste错误。替换

 SUBSTR( NUMEROA, 1, 2) ) AS LOG_NUMA_ESTADO,
 SUBSTR( NUMEROA, 1, 2) ) AS LOG_NUMB_ESTADO

 SUBSTR( NUMEROA, 1, 2)  AS LOG_NUMA_ESTADO, 
 SUBSTR( NUMEROA, 1, 2)  AS LOG_NUMB_ESTADO

修改

虽然我正在使用它,但我应该指出,您正在将相同的列进行两次子串,但具有不同的别名。你的意思是这样做的吗?

 SUBSTR( NUMEROA, 1, 2)  AS LOG_NUMA_ESTADO, 
 SUBSTR( NUMEROB, 1, 2)  AS LOG_NUMB_ESTADO
               ^

如果是这样,您需要在两个位置顶部修复列名称。

答案 1 :(得分:2)

太多了))

create table TB_OLAP_TELEFONIA as 

select   ID                AS LOG_ID,
         HORAFIM           AS LOG_HORA,
         DURACAO           AS LOG_DURA,
         TO_CHAR( HORAFIM, 'D')  AS LOG_DIA_SEMANA,
         TO_NUMBER( SUBSTR( NUMEROA, 3, 1 ) ) AS LOG_NUMA_TIPO,
         TO_NUMBER( SUBSTR( NUMEROA, 3, 1 ) ) AS LOG_NUMB_TIPO,
         SUBSTR( NUMEROA, 1, 2 ) AS LOG_NUMA_ESTADO,          
         SUBSTR( NUMEROA, 1, 2 ) AS LOG_NUMB_ESTADO

from     DADOS_COLUNA_OLAP