2013-09-23 78 views
3

我想將此查詢的結果插入到我在下面創建的表格中。當空表中的一列爲空時,如何插入表格

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Entity]') AND type in (N'U')) 
DROP TABLE [Entity] 
Go 
Create Table Entity 

([EntCode] [nvarchar](8) NOT NULL, 
    [Name] [nvarchar](80) NOT NULL, 
    [CompanyRegistration] [nvarchar](80) NULL, 
    [Active] [int] NOT NULL, 
    [AccessLevel] [int] NOT NULL , 
    [SiteURN] [nvarchar](128) NOT NULL, 
    [CompanyURN] [nvarchar](128) NOT NULL, 
    [SiteName] [nvarchar](30) NOT NULL, 
    [SiteDesc] [nvarchar](60) NULL, 
    [SiteURL] [nvarchar](512) NOT NULL) 

而且我想使用這個從該查詢插入數據,但是我得到這個錯誤 「插入錯誤:列名或提供值的數目不匹配表定義」

因爲我有一個額外的列[公司註冊] nvarchar NULL,我創建表時decalred NULL。我如何插入這些查詢結果與我的[公司註冊]列在表中標記爲NULL?

insert into ResourceTaskFact.dbo.Entity 

Select 
    e.EntCode, 
    e.Name, 
    e.Active , 
    e.AccessLevel, 

    ss.SiteURN, 
    ss.CompanyURN, 
    ss.SiteName , 
    ss.SiteDesc , 
    ss.SiteURL 
from SMECSite ss, SMECLegalEnt e 
where ss.localsiteflag = 1 
and e.active = 1 

我該如何解決這個問題?我需要你的幫助夥計們。 先謝謝您!

回答

4
insert into ResourceTaskFact.dbo.Entity 
    (e.EntCode, 
    e.Name, 
    e.Active, 
    e.AccessLevel, 
    ss.SiteURN, 
    ss.CompanyURN, 
    ss.SiteName, 
    ss.SiteDesc, 
    ss.SiteURL) 

    Select e.EntCode, 
     e.Name, 
     e.Active, 
     e.AccessLevel, 
     ss.SiteURN, 
     ss.CompanyURN, 
     ss.SiteName, 
     ss.SiteDesc, 
     ss.SiteURL 
    from SMECSite ss, SMECLegalEnt e 
    where ss.localsiteflag = 1 
    and e.active = 1 
+0

非常感謝Mr.Sunysen! – BA82283

0

這是一個很好的習慣來命名要插入的列到

insert into ResourceTaskFact.dbo.Entity 
(
    [EntCode], 
    [Name], 
    [Active], 
    [AccessLevel], 
    [SiteURN], 
    [CompanyURN]L, 
    [SiteName], 
    [SiteDesc], 
    [SiteURL] 
)  
Select 
    e.EntCode, 
    e.Name, 
    e.Active , 
    e.AccessLevel,  
    ss.SiteURN, 
    ss.CompanyURN, 
    ss.SiteName , 
    ss.SiteDesc , 
    ss.SiteURL 
from SMECSite ss, SMECLegalEnt e 
where ss.localsiteflag = 1 
and e.active = 1 

這樣,你不必填寫欄你沒有一個值。

3

您需要在您的SELECT聲明中明確設置CompanyRegistrationNULL

insert into ResourceTaskFact.dbo.Entity 

Select 
    e.EntCode, 
    e.Name, 
    NULL AS CompanyRegistration, -- Put column name in to demonstrate why you're selecting NULL here 
    e.Active , 
    e.AccessLevel, 
    ss.SiteURN, 
    ss.CompanyURN, 
    ss.SiteName , 
    ss.SiteDesc , 
    ss.SiteURL 
from SMECSite ss, SMECLegalEnt e 
where ss.localsiteflag = 1 
and e.active = 1 
相關問題