2016-02-29 55 views
0

我的表像下面定義插入:選擇特定的列與另一個表

#TempData(ColmnA, ColumnB) -- Temp table. 
EmployeeDSU(ColumnA, ColumnB, ColumnC, ColumnD, ColumnE) 

#TempData從.csv文件和列可能會改變未來。現在

,我想要做的是: 如果ColumnAColumnB存在於EmployeesDSU表,那麼#TempData數據應該被插入到EmployeesDSU表,併爲EmployeesDSU表中的所有其餘的列,NULL應插入。我應該在存儲過程中做到這一切。

任何人都可以請建議我該怎麼做!

+0

也許我錯過了一些東西。但是,你不能只檢查'sys.columns'表中是否有匹配的列,然後按照你認爲合適的方式進行插入操作? – Ralph

+0

爲什麼你不知道EmployeeDSU是否包含這些列? –

回答

0
if object_id('tempdb..#TempData') is not null drop table #TempData; 
select 1 ColumnA, 1 ColumnB into #TempData; 

if not exists(
    select 
    * 
    from 
    (
     select 
     c.name 
     from 
     tempdb.sys.columns c 
     where 
     c.object_id = object_id('tempdb..#TempData') 
    ) a 
    left join (
     select 
     * 
     from 
     sys.columns c 
     where 
     c.object_id = object_id('dbo.EmployeeDSU') 
    ) b on a.name = b.name 
    where 
    b.name is null 
) begin 

    insert into dbo.EmployeeDSU(ColumnA, ColumnB) 
    select 
    t.ColumnA, t.ColumnB 
    from 
    #TempData t 
    ; 

end; 
相關問題