如何通过复制并修改现有Teradata表创建新表并添加条件列?
Teradata 复制表并添加条件生成新列的正确实现
你的原有代码存在两个问题:一是添加新列后无法自动根据原表的Y/N列赋值,二是ALTER语句的CHECK约束缺少闭合括号。正确的做法是在创建新表时直接生成目标列并添加约束,一步到位:
CREATE TABLE new_table AS ( SELECT *, CASE WHEN flag_col = 'Y' THEN 'National' WHEN flag_col = 'N' THEN 'Local' ELSE NULL -- 可选:处理非Y/N的异常值,根据需求调整 END AS new_col FROM old_table ) WITH DATA CHECK (new_col IN ('National', 'Local'));
说明:
- 将
flag_col替换为你原表中存储Y/N值的实际列名 CASE语句直接根据原表列的值生成new_col的对应结果,无需后续手动赋值- 在
CREATE TABLE时直接定义CHECK约束,比先建表再ALTER更高效 - 如果原表中存在非Y/N的异常值,可通过
ELSE子句定义默认处理逻辑(比如设为NULL或其他值)
内容的提问来源于stack exchange,提问作者JMJ
相关产品推荐
相关产品推荐

