【问题标题】:How to create a Teradata table by copying and modifying another Table?如何通过复制和修改另一个表来创建 Teradata 表?
【发布时间】:2023-02-09 01:32:53
【问题描述】:

我试图通过复制另一个表来创建一个新的 Teradata 表,但还需要添加一个新列,根据复制时旧表中另一列的条件,你能帮我写代码吗?

create Table new_table as 
      (select * 
       from old_table) with data

ALTER TABLE new_table ADD new_col varchar(20) check(new_col in ('National', 'Local')

-- old_table 中有一列的值为 ('Y', 'N'),我如何在 new_table 中创建新列,条件如下:如果 Y new_col=national,如果 N,new_col=local?

谢谢。

【问题讨论】:

    标签: teradatasql


    【解决方案1】:

    您不能创建将立即被违反的检查约束。另请注意, CREATE TABLE AS (SELECT ...) 导致所有列都可以为空,并且如果您没有明确声明主索引,则新表将使用系统默认值,例如第一列单独作为 PI。 CASE 表达式可用于填充新列。

    一种可能的顺序:

    create Table new_table as old_table with no data; -- copy index definitions, NOT NULL attributes  
    
    ALTER TABLE new_table ADD new_col varchar(20) check(new_col in ('National', 'Local');
    
    INSERT new_table SELECT o.*, 
      CASE WHEN o.old_col = 'Y' THEN 'National' ELSE 'Local' END 
    FROM old_table o;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      • 2018-12-15
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 2012-08-30
      • 1970-01-01
      相关资源
      最近更新 更多