1

我是新人,所以请温柔。

一直使用 SQL server 2008r2 根据从另一台服务器上更大的专有 SQL 数据库中提取的信息创建工作数据库。我可以使用 INSERT INTO 函数将信息提取到新表中,但是当我尝试通过连接从链接数据库的另一个表中添加链接字段时,我一无所获。事不宜迟,这是我的所有新奇荣耀的查询:

INSERT INTO [Cust_Info].[dbo].[form_data]
        (CustNo
        ,LastName
        ,FirstName
        ,Add1
        ,Add2
        ,City
        ,State
        ,Zip
        ,Phone1
        ,Phone2
        ,Email)
SELECT      [CustNo]
        ,[LastName]
        ,[FirstName]
        ,[Add1]
        ,[Add2]
        ,[City]
        ,[State]
        ,[Zip]
        ,[Phone1]
        ,[Phone2]
        ,[Email]

FROM [XYZ-SERVER-1\ETC].[Service].[dbo].[Customer]
JOIN [XYZ-SERVER-1\ETC].[Service].[dbo].[EmailInv] 
ON [Cust_Info].[dbo].[form_data].[CustNo]=[XYZ-SERVER-1\ETC].[Service].[dbo].
[EmailInv].[CustNo]

我确信我犯了一个非常菜鸟的错误,但我继续在“ON”行上得到“Msg 4104”,在 select 语句的第一行得到一个“Msg 209”(不明确的列名 'CustNo') .

我已经对不同论坛上的许多相关帖子进行了分类,并且根据我的帐户,这应该可以。你们中的一位兽医可以向这个菜鸟展示一下吗?

先感谢您。

4

3 回答 3

2

好吧,我注意到的一件事是您正在尝试使用INSERT INTO您的桌子[Cust_Info].[dbo].[form_data],但您不在声明JOINing中的这张桌子上JOIN。所以你的 JOIN 语法似乎不正确。我猜你正在尝试JOIN这种方式,请注意我使用了别名:

INSERT INTO [Cust_Info].[dbo].[form_data]
(
    CustNo
    ,LastName
    ,FirstName
    ,Add1
    ,Add2
    ,City
    ,State
    ,Zip
    ,Phone1
    ,Phone2
    ,Email
)
SELECT [CustNo] -- which table is this from select the alias? 
    ,[LastName]
    ,[FirstName]
    ,[Add1]
    ,[Add2]
    ,[City]
    ,[State]
    ,[Zip]
    ,[Phone1]
    ,[Phone2]
    ,[Email]

FROM [XYZ-SERVER-1\ETC].[Service].[dbo].[Customer] c
JOIN [XYZ-SERVER-1\ETC].[Service].[dbo].[EmailInv] e
    ON c.[CustNo]=e.[CustNo]

但您还需要指定每列来自哪个表。例如,[CustNo]inSELECT在两张表中,你需要哪一张?

于 2012-07-17T14:49:52.297 回答
1

那是因为CustNois 两个表中的一个字段,所以 SQL 不知道该选择哪一个。

尝试:

INSERT INTO [Cust_Info].[dbo].[form_data]
        (CustNo
        ,LastName
        ,FirstName
        ,Add1
        ,Add2
        ,City
        ,State
        ,Zip
        ,Phone1
        ,Phone2
        ,Email)
SELECT      [Customer].[CustNo]
        ,[LastName]
        ,[FirstName]
        ,[Add1]
        ,[Add2]
        ,[City]
        ,[State]
        ,[Zip]
        ,[Phone1]
        ,[Phone2]
        ,[Email]

FROM [XYZ-SERVER-1\ETC].[Service].[dbo].[Customer] 
JOIN [XYZ-SERVER-1\ETC].[Service].[dbo].[EmailInv] 
ON [Cust_Info].[dbo].[form_data].[CustNo]=[XYZ-SERVER-1\ETC].[Service].[dbo].
[EmailInv].[CustNo]
于 2012-07-17T14:47:28.113 回答
0

您在两个表中都有 custno。您应该在它前面加上 Customer.CustNo 来识别源表:

select Customer.CustNo, . . .

显然,表之间没有其他列重复。通常,在进行连接时,最好在所有引用的列(任何地方)之前加上它们的源表。

于 2012-07-17T14:46:23.230 回答