存储过程错误 .. 将列从一个 table 插入到另一个

Stored procedure error .. Inserting columns from one table to another

我有一个存储过程,其中我试图在 table 中插入两列,一列的值来自另一列 table,第二列的值是常量并传入参数.

我想我将不得不使用某种循环,但我不知道如何使用。请帮忙

我的存储过程

CREATE PROCEDURE sp_MTS_MTS_MemberTracking_request
    -- Add the parameters for the stored procedure here
@monthYear datetime 
AS

select [MemberId] from [dbo].[MTS_Members] where Is_Active='true'

insert into [dbo].[MTS_MemberTracking] (MemberId,MonthYear)values ((select [MemberId]
 from [dbo].[MTS_Members]
 where Is_Active='true'),@monthYear)  

错误

消息 512,级别 16,状态 1,第 1 行 子查询返回了 1 个以上的值。当子查询跟在 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。 声明已终止。

由于 MTS_Members 中可以有多个记录 Is_Active='true',因此您不能使用 insert... values 语法插入它。

如果您真的想插入所有 "active" 记录的 ID,则只需将您的查询更改为:

insert into [dbo].[MTS_MemberTracking] (MemberId,MonthYear)
select [MemberId], @monthYear
 from [dbo].[MTS_Members]
 where Is_Active='true'

或者,如果应该恰好插入一条记录 - 您必须将 select 的 where 条件更改为 return 正好是一个 MemberId,将该 ID 存储在某个变量中并用于 insert... values 构造。