我是新人所以请保持温柔。
使用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]
我确信我犯的是一个非常的noob错误,但我继续在“ON”行上获得“Msg 4104”,并在第一行上获得“Msg 209”(不明确的列名'CustNo')选择陈述。
我已经在不同的论坛上对很多相关帖子进行了整理,并且通过我的帐户,这应该可行。你们其中一个人可以向这个菜鸟点亮吗?
提前谢谢。
答案 0 :(得分: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]
中的SELECT
位于两个表中,您需要哪一个?
答案 1 :(得分:1)
那是因为CustNo
是两个表中的一个字段,所以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]
答案 2 :(得分:0)
两张桌子都有custno。您应该在它之前使用Customer.CustNo来标识源表:
select Customer.CustNo, . . .
显然,表之间没有其他列重复。通常,在进行连接时,最好在所有引用的列(任何地方)之前加上它们的源表。