Sql 使用多个选择项插入到表中

Sql 使用多个选择项插入到表中,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正在使用select语句创建存储过程,以便在表中插入值。 下面是我的QueuedMail表,我想在其中插入两个不同表中的行 Id int Unchecked Priority int Unchecked [From] nvarchar(500) FromName nvarchar(500) [To] nvarchar(500) ToName nvarchar(500) CC nvarcha

我正在使用select语句创建存储过程,以便在表中插入值。 下面是我的QueuedMail表,我想在其中插入两个不同表中的行

Id          int Unchecked
Priority    int Unchecked
[From]      nvarchar(500)   
FromName    nvarchar(500)   
[To]        nvarchar(500)   
ToName      nvarchar(500)   
CC          nvarchar(500)   
Bcc         nvarchar(500)   
Subject     nvarchar(1000)  
Body        nvarchar(MAX)   
第一个表是要发送给客户的活动

Id             int  
Name           nvarchar(MAX)    
Subject        nvarchar(MAX)    
Body           nvarchar(MAX)    
Sent           bit  
我想把这次活动的主体和主题插入上表。正文中有一些标记,我想用客户名称替换。 现在,客户值将来自具有不同字段(如名称、电子邮件)的客户表。现在,第一个表中的to和toname将来自这个customer表

GO
/****** Object:  StoredProcedure [dbo].[SendCampaign]    Script Date: 11/19/2013 14:40:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SendCampaign]
  (@CampaignSubject nvarchar(max),
  @CampaingBody nvarchar(max),
    @TotalRecords int OutPut)

AS
BEGIN
   SET NOCOUNT ON

   Declare @Body  nvarchar(max)=@CampaingBody
   Declare @Subject  nvarchar(max)=@CampaignSubject

   Select *
Into   #Temp
From   Customer where Active=1 

Select *from #Temp
   Declare @Id int


     Begin
Insert Into QueuedEmail([Priority],[From],FromName,[To],[ToName],CC,Bcc,
[Subject],[Body],CreatedonUtc,SentTries,SentonUtc,EmailAccountid,Attachment)

  Select  3,'test@test.com','My Site',Email,'Null','Null','Null',@Subject,
dbo.ModifyCampaign(@Body,CAST(NewsLetterSubscriptionGuid as NVARCHAR(200)),Email)
,GEtUtcDate(),0,null,4,'Null'
              from #Temp






     END
    Drop table #Temp

END 
任何建议

如果不明白,请原谅。如果有的话,请留下评论

假设我有一个customer表,其中有两个条目,如

Id  F_Name    L_Name    Email 
1   Nitin     Varpe     fedexnit@gmail.com
2   Prashant  Bankar    pbankar@yahoo.com
现在我有了一个像身体一样的营地

亲爱的%Customer.Name%

//这是竞选活动的主体

现在,当我单击“发送活动”时。“%”中引用的此标记将被替换为客户名称。然后,此正文应通过客户的电子邮件插入QueuedMail表“to”列,并与客户名称相同

谢谢你的回应

希望能从你身上看到更多

客户名称在哪里(哪个表)

令牌和客户名称之间的关系是什么?您如何决定用哪个客户名称替换哪个令牌

首先构建require-select语句并验证每一列和输出。决定外部联接/左侧联接/内部联接

将%Customer.Name%在车身部件中多次或仅一次。 每行都一样吗? 如果%Customer.Name%将出现在每一行和每一正文中,那么这是非常容易的
您只需用Firstname+lastname替换即可。

试试这样的方法

INSERT INTO queuedemail 
(
    FromName,
    To,
    Body
)
SELECT 
    F_Name,
    Email,
    'Dear' + F_Name +
    (
     SELECT body 
     FROM campaign 
     WHERE -- criteria for selecting body
    )

FROM customer 
WHERE -- your where condition criteria

在insert和select子句中根据您的需要包含这些字段

最终提出了解决方案。谢谢大家的支持

下面是我的存储过程

创建临时表以从customer表中获取所有记录

GO
/****** Object:  StoredProcedure [dbo].[SendCampaign]    Script Date: 11/19/2013 14:40:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SendCampaign]
  (@CampaignSubject nvarchar(max),
  @CampaingBody nvarchar(max),
    @TotalRecords int OutPut)

AS
BEGIN
   SET NOCOUNT ON

   Declare @Body  nvarchar(max)=@CampaingBody
   Declare @Subject  nvarchar(max)=@CampaignSubject

   Select *
Into   #Temp
From   Customer where Active=1 

Select *from #Temp
   Declare @Id int


     Begin
Insert Into QueuedEmail([Priority],[From],FromName,[To],[ToName],CC,Bcc,
[Subject],[Body],CreatedonUtc,SentTries,SentonUtc,EmailAccountid,Attachment)

  Select  3,'test@test.com','My Site',Email,'Null','Null','Null',@Subject,
dbo.ModifyCampaign(@Body,CAST(NewsLetterSubscriptionGuid as NVARCHAR(200)),Email)
,GEtUtcDate(),0,null,4,'Null'
              from #Temp






     END
    Drop table #Temp

END 
上面的select语句ModifyCampaign是我编写的用相应的客户详细信息替换活动中的代币的函数


Thanx all:)并希望它将来能帮助其他人

您能发布您想要插入的表和数据吗?这些是源表还是目标表?到目前为止,您开发的查询是什么?如果活动表和客户表有任何关系,那么您可以使用联接在QueuedMail表中插入值。否则使用子查询。@raj我尝试使用select将insert插入,但它返回为子查询返回多个值error@vikas表customer和email中也没有客户和活动客户名称之间的关系