【发布时间】:2017-11-20 16:04:32
【问题描述】:
我们有一个名为 PrematureLoanSettlement 的表:
CREATE TABLE [dim].[PrematureLoanSettlementRequest]
(
[PrematureLoanSettlementRequestID] INT NOT NULL IDENTITY(1,1) PRIMARY KEY
,[PrematureLoanSettlementRequestID_Primary] BIGINT NOT NULL
,[ContractID] INT NOT NULL
,[RequestDateID] INT NOT NULL
,[Created] DATETIME NOT NULL DEFAULT GETDATE()
,[Modified] DATETIME NOT NULL DEFAULT GETDATE()
)
GO
在 ETL 过程中,我想更新一个列 ContractID:
-- Update ContractID
-------------------------------------------------------------------------
IF @DateID BETWEEN @MinDateID AND @MaxDateID
BEGIN
UPDATE stg.PrematureLoanSettlementRequest
SET a.CountryId = b.ContractID
SELECT ContractID, @SourceID, @CountryId
FROM stg.PrematureLoanSettlementRequest a
INNER JOIN dim.Contract b
ON a.ContractID = b.ContractID
WHERE b.SourceID = @SourceID
AND b.CountryId = @CountryId
-- For existing
UPDATE a
SET a.ContractID = b.ContractID
FROM
[stg].[PrematureLoanSettlementRequest] a
JOIN [dim].[PrematureLoanSettlementRequest] b
ON a.[PrematureLoanSettlementRequestID_Primary] = b.[PrematureLoanSettlementRequestID_Primary]
WHERE a.SourceID = @SourceID
AND a.ContractID IS NULL
-- Others
UPDATE [stg].[PrematureLoanSettlementRequest]
SET ContractID = 19000101
WHERE ContractID IS NULL
END
返回错误:
JOIN [dim].[PrematureLoanSettlementRequest] b
ON a.[PrematureLoanSettlementRequestID_Primary] = **b.[PrematureLoanSettlementRequestID_Primary]**
SQL71501:过程:[s01].[stgPrematureLoanSettlementRequest] 包含对对象的未解析引用。无论是对象 不存在或引用不明确,因为它可以引用任何 以下对象: [dim].[PrematureLoanSettlementRequest].[b]::[PrematureLoanSettlementRequestID_Primary], [dim].[PrematureLoanSettlementRequest].[PrematureLoanSettlementRequestID_Primary] 或者 [stg].[PrematureLoanSettlementRequest].[b]::[PrematureLoanSettlementRequestID_Primary]。 Staging.Database C:\Workspace\Projects\Staging.Database\SchemaObjects\Procedures\s01\stgPrematureLoanSettlementRequest.sql
我们将不胜感激。
【问题讨论】:
-
如果你解释你想要做什么,可能有一种更简单的方式来表达查询。
-
我想你会想改变上面的
setSET a.CountryId = b.ContractID来匹配下面的,比如SET a.ContractID = b.ContractID
标签: sql sql-server visual-studio stored-procedures