我设法在新表中创建以下列:
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?
谢谢!
答案 0 :(得分:2)
首先,许多数据库支持计算或生成的列。这意味着您可以通过执行以下操作向数据库添加虚拟列:
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
。
答案 1 :(得分:1)
假设您正在使用MSSQL。在how to insert
添加专栏:
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