繁体   English   中英

根据其他列创建一个新列

[英]Create a new column based on other columns

我设法在新表中创建以下列:

CREATE TABLE t_issue_dates as

SELECT issue_d,

cast(substr(issue_d,5,4) as numeric) as issue_year
FROM myDB

(代码将年月变量重新编码为仅年变量)

但是,我无法将此变量添加到现有表“ myDB”中。 我试过使用:

ALTER TABLE myDB ADD v_year命令,但是我无法正确处理它。

有谁知道我如何将以上变量添加到“原始”表myDB中?

谢谢!

首先,许多数据库都支持计算列或生成列。 这意味着您可以通过执行以下操作将虚拟列添加到数据库:

alter table t_issue_dates add issue_year as (cast(substr(issue_d, 5, 4) as numeric));

我推荐这种方法,因为issue_year始终是最新的。

其次,您可以将其作为实际列来执行,但是该值可能会过时,并且需要为每个插入/更新的行重新计算:

alter table t_issue_dates add issue_year numeric;

update t_issue_dates
    set issue_year = cast(substr(issue_d, 5, 4) as numeric);

作为记录,我将使用int而不是numeric

假设您正在使用MSSQL。 值得阅读有关how to insert文档或简单的Google

添加栏:

Alter table t_issue_dates 
 Add V_year Int

下一步:这只会为该特定列插入数据。

Insert into t_issue_dates  (v_year)
SELECT 
cast(substr(issue_d,5,4) as numeric) 
FROM myDB

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM