如何将查询值插入到具有现有数据的列中?

How can I insert query value to the column with existing data?

我想将此查询插入到新列中,下面是我的查询:

INSERT INTO T_SG_WICA_POL_DATA (SubClassGroup)
SELECT M.[Subclass_Main] 
FROM [WICA subclass mapping] AS M
LEFT JOIN T_SG_WICA_TRANSACTION_VIEW ON M.[Subclass Code] = Subclass;

但我在尝试 运行 时收到此错误:

Cannot insert the value NULL into column 'AccountTenure', table 'analytics.dbo.T_SG_WICA_POL_DATA'; column does not allow nulls. INSERT fails.`

我想插入到 SubClassGroup 列而不是 AccountTenure 列,所以我不确定为什么会收到此错误以及如何将值插入到 SubClassGroup 列?

通过使用 INSERT INTO 开始查询,您是在告诉系统在 table 中插入一个全新的行。您需要至少为未定义默认值或自动递增值且不可为空的每一列提供一个值。

INSERT INTO T_SG_WICA_POL_DATA (SubClassGroup, AccountTenure, ...)
SELECT M.Subclass_Main, M.AccountTenure, ... 
FROM [WICA subclass mapping] AS M

如果您想更新一个或多个现有 table 行中的一个或多个列的值,您可以使用更新查询:

UPDATE T_SG_WICA_POL_DATA SET SubClassGroup = M.Subclass_Main --, AccountTenure = M.AccountTenure, ...
FROM WICA subclass mapping AS M
JOIN T_SG_WICA_TRANSACTION_VIEW AS T ON M.[Subclass Code] = T.Subclass
--WHERE some_other_condition

请注意,我将左联接更改为常规联接,因为左联接不会向查询添加任何约束,导致更新应用于所有行,而不是仅应用于 [=] 中存在记录的行18=] 与匹配的子类代码。