2010-07-28 75 views
0

这里是SQL:错误在SQL Server 2005语法

CREATE TABLE dbo.TmpFeesToRules1(Name varchar, LookupId int) 

INSERT INTO dbo.TmpFeesToRules1(Name, LookupId) 
SELECT DISTINCT Name, 0 FROM Lending.Fee 
UNION SELECT DISTINCT Name, 0 FROM Lending.ApplicationFee 

INSERT INTO dbo.tblLookup (LookupType, LookupCode, LookupDesc, EditFlag, DeletedFlag, DefaultFlag) 
SELECT 'FEE_CODE', Name, Name, 0, 0, 0 
FROM dbo.TmpFeesToRules1 

UPDATE dbo.TmpFeesToRules1 
SET 
    LookupId = L.LookupID 
FROM 
    dbo.tblLookup L 
INNER JOIN dbo.TmpFeesToRules1 T ON T.Name = L.LookupDesc 
WHERE 
    L.LookupType = 'FEE_CODE' 

CREATE TABLE dbo.TmpFeesToRules2(FeeId int, Name varchar) 

INSERT INTO dbo.TmpFeesToRules2(FeeId, Name) 
SELECT FeeId, Name FROM Lending.ApplicationFee 

GO 

UPDATE Lending.ApplicationFee 
SET Lending.ApplicationFee.FeeTypeId = T.LookupId 
FROM dbo.TmpFeesToRules2 TT 
INNER JOIN dbo.TmpFeesToRules1 T ON T.Name = TT.Name 
WHERE Lending.ApplicationFee.FeeId = TT.FeeId 

DROP TABLE dbo.TmpFeesToRules1 
DROP TABLE dbo.TmpFeesToRules2 

以下是错误:

Invalid object name 'dbo.TmpFeesToRules2'.
Execute failed, return code: 1

任何想法?

回答

6

无关,与Go或分号,

正在更新Lending.ApplicationFee但它没有出现在FROM条款中。

UPDATE Lending.ApplicationFee 
SET Lending.ApplicationFee.FeeTypeId = T.LookupId 
FROM dbo.TmpFeesToRules2 TT 
INNER JOIN dbo.TmpFeesToRules1 T ON T.Name = TT.Name 
WHERE Lending.ApplicationFee.FeeId = TT.FeeId 

我想这应该是这样的

UPDATE Lending.ApplicationFee 
SET Lending.ApplicationFee.FeeTypeId = T.LookupId 
FROM Lending.ApplicationFee join dbo.TmpFeesToRules2 TT ON <Some Condition> 
INNER JOIN dbo.TmpFeesToRules1 T ON T.Name = TT.Name 
WHERE Lending.ApplicationFee.FeeId = TT.FeeId 
+0

而我认为这是错误的地方:)尽管所有CREATE/INSERT/GO的争论 – SWeko 2010-07-28 13:07:30

+0

+1我已经删除了我的意见,以避免混淆答案。 – 2010-07-28 13:14:23

+0

你应该得到我认为的徽章! – 2010-07-28 13:15:35

2

而不是

CREATE TABLE dbo.TmpFeesToRules2(FeeId int, Name varchar) 

INSERT INTO dbo.TmpFeesToRules2(FeeId, Name) 
SELECT FeeId, Name FROM Lending.ApplicationFee 

你可能只是做:

SELECT FeeId, Name 
INTO dbo.TmpFeesToRules2 
FROM Lending.ApplicationFee 

这将创建并填充表中的一个步骤

+0

那么你就不需要去? – Scott 2010-07-28 13:01:04

+0

我不这么认为。我认为这个问题不在GO中。 GO本身不是SQL命令,它只是告诉工具将代码发送到数据库 – SWeko 2010-07-28 13:04:36