2014-02-25 62 views
0

我有一个查询返回ID,ORG IDNAME遍历临时表并插入到另一个表中

代码:

CREATE TABLE #TMP (ORG_ID INT) 

INSERT INTO #TMP SELECT ORG_ID FROM [dbo].[fx_Rights_OrgIDs] (331) 

SELECT [BRN_ID],[BRN_ORGID],[BRN_Name] 
FROM [dbo].[BranchDetails] 
WHERE [BRN_ORGID] IN (SELECT ORG_ID FROM #TMP) 

DROP TABLE #TMP 

返回:

BRA_ID BRA_ORGID  BRA_Name 

289  333   Office 

290  334   Store 

我想要做的是通过迭代和#TMP插入到另一个表:SitePrefix如果SitePrefix存在不插入值。

因此,例如插入BRA_Nametemp tableSitePrefix,如果它存在,则跳过。

SitePrefix列如下:(SPF_IDSPF_NameSPF_Prefix

SPF_ID是自动生成的,SPF_Name应该来自BRA_Name和SPF_PrefixEMS

回答

0

尝试它采用EXCEPT被设置在下方查询SQL Server中的差异运算符

INSERT INTO SitePrefix 
    SELECT [BRN_Name], 'EMS' 
    FROM [dbo].[BranchDetails] 
    WHERE [BRN_ORGID] IN (SELECT ORG_ID FROM #TMP) 
    EXCEPT 
    SELECT SPF_Name, 'EMS' 
    FROM SitePrefix 
0

试试这个,然后告诉任何问题,

MERGE siteprefix AS T 
using (SELECT [brn_id], 
       [brn_orgid], 
       [brn_name] 
     FROM [dbo].[branchdetails] 
     WHERE [brn_orgid] IN (SELECT org_id 
           FROM [dbo].[Fx_rights_orgids] (331))) AS s 
ON t.spf_name = brn_name 
WHEN NOT matched THEN 
    INSERT (spf_name, 
      spf_prefix) 
    VALUES (brn_name, 
      brn_orgid) 
相关问题