2015-10-06 35 views
0

我需要根據select進行更新。出現以下錯誤:the column '' was specified multiple times for Q如何重寫查詢

UPDATE Evolution1.DimAdministrator 
SET Evolution1.DimAdministrator.ClaimSystemCodeId = 17 
FROM Evolution1.DimAdministrator da INNER JOIN (
    Select 
     ExtractId, 
     base.AdministratorId, 
     base.CardprocessorAdministratorId, 
     AdministratorName,         
     EffectiveDate,   
     CancelDate ,    
     State, 
     StageError , 
     AdministratorKey, 
     CustomerKey , 
     Name   ,                      
     EffectiveDateKey , 
     CancelDateKey, 
     StateProvinceKey , 
     Alias , 
     NavId  , 
     warehouse.AdministratorId , 
     warehouse.CardprocessorAdministratorId, 
     warehouse.ClaimSystemCodeId, 
     Inserted ,    
     Updated 
    FROM OneStage.OnePay.Administrator base 
    INNER JOIN OneWarehouse.Evolution1.DimAdministrator warehouse ON base.AdministratorId = warehouse.AdministratorId 
    WHERE base.ClaimSystemCodeId <> warehouse.ClaimSystemCodeId 
    AND base.ClaimSystemCodeId = 1 
) AS Q 

請幫忙。謝謝。

+0

那它是什麼,SQL Server,Oracle或MySQL? – vesan

+0

語法似乎特定於MSSQL。 建議編輯。 – Victor

+0

加入條件不存在。 )AS Q ON Q. <> = da。 <>。同樣在你的子查詢中,不需要warehouse.AdministratorId,因爲它與base.AdministratorId相同 – Hakunamatata

回答

1

您有多個重複名稱的列。

把一個別名對他們這樣的:

UPDATE Evolution1.DimAdministrator 
SET Evolution1.DimAdministrator.ClaimSystemCodeId = 17 
FROM Evolution1.DimAdministrator da INNER JOIN (
    Select 
     ExtractId, 
     base.AdministratorId AS base_AdminID, 
     base.CardprocessorAdministratorId AS base_CardID, 
     AdministratorName,         
     EffectiveDate,   
     CancelDate ,    
     State, 
     StageError , 
     AdministratorKey, 
     CustomerKey , 
     Name   ,                      
     EffectiveDateKey , 
     CancelDateKey, 
     StateProvinceKey , 
     Alias , 
     NavId  , 
     warehouse.AdministratorId wh_AdminID, 
     warehouse.CardprocessorAdministratorId AS WH_CardID, 
     warehouse.ClaimSystemCodeId, 
     Inserted ,    
     Updated 
    FROM OneStage.OnePay.Administrator base 
    INNER JOIN OneWarehouse.Evolution1.DimAdministrator warehouse ON base.AdministratorId = warehouse.AdministratorId 
    WHERE base.ClaimSystemCodeId <> warehouse.ClaimSystemCodeId 
    AND base.ClaimSystemCodeId = 1 
) AS Q 

你確定你不需要加入Q ON的東西嗎?