2012-02-15 45 views
1

我有一個嵌套的選擇查詢返回適量的行。該查詢構建一個記錄集並將其與一個表進行比較,並返回查詢中不在表中的記錄。TSQL更新查詢意外行爲

我將選擇查詢轉換爲更新查詢。我正在試圖用查詢返回的行填充表。當我運行更新查詢時,它返回零行更新。我不明白爲什麼,因爲選擇查詢返回記錄,我在更新查詢中使用相同的代碼。

感謝

選擇查詢:(這是返回幾條記錄)

Select * 
From 
(SELECT DISTINCT 
ProductClass,SalProductClass.[Description],B.Branch,B.BranchDesc,B.Salesperson,B.Name, 
CAST(0 AS FLOAT) AS Rate,'N' AS Split 
FROM (SELECT SalBranch.Branch,SalBranch.[Description] AS BranchDesc,A.Salesperson,A.Name 
     FROM (SELECT DISTINCT 
      Salesperson,Name 
      FROM SalSalesperson 
      ) A 
     CROSS JOIN SalBranch 
    ) B 
CROSS JOIN SalProductClass 
) C 
Left Outer Join RateComm On 
RateComm.ProductClass = C.ProductClass and 
RateComm.Branch = C.Branch And RateComm.Salesperson = C.Salesperson 
Where RateComm.ProductClass is Null 

更新查詢:(這是返回零個記錄)

UPDATE RateComm 
SET RateComm.ProductClass=C.ProductClass,RateComm.ProdClassDesc=C.ProdClassDesc, 
RateComm.Branch=C.Branch,RateComm.BranchDesc=C.BranchDesc,RateComm.Salesperson=C.Salesperson, 
RateComm.Name=C.Name,RateComm.Rate=C.Rate,RateComm.Split=C.Split 
    FROM (SELECT DISTINCT 
      ProductClass,SalProductClass.[Description] AS ProdClassDesc,B.Branch,B.BranchDesc,B.Salesperson,B.Name, 
      CAST(0 AS FLOAT) AS Rate,'N' AS Split 
      FROM (SELECT SalBranch.Branch,SalBranch.[Description] AS BranchDesc,A.Salesperson,A.Name 
       FROM (SELECT DISTINCT 
         Salesperson,Name 
         FROM SalSalesperson 
        ) A 
       CROSS JOIN SalBranch 
       ) B 
      CROSS JOIN SalProductClass 
     ) C 
    LEFT OUTER JOIN RateComm ON C.ProductClass=RateComm.ProductClass AND 
    C.Salesperson=RateComm.Salesperson AND C.Branch=RateComm.Branch 
    WHERE RateComm.ProductClass IS NULL 

回答

2

這很難更新的內容沒有按」不存在。您是否嘗試過使用INSERT查詢?

+0

謝謝先生。我知道這很簡單,我忽略了 – user1212337 2012-02-15 22:03:30

+0

如果那是答案,那就把它標爲答案。 – Paparazzi 2012-02-15 22:11:44