2012-12-04 78 views
1

我試圖獲取數據的水平輸出格式SQL錯誤 - 多部分標識符無法綁定

查詢是:

SELECT RDT1.County_Name 
     ,RDT1.DistributionNumber as Dist_No 
     ,RDT1.Vac_Allocated 
     ,RDT1.Priority,RDT2.DistributionNumber as Dist_No 
     ,RDT2.Vac_Allocated as Vac_Allocated 
     ,RDT3.DistributionNumber as Dist_No 
     ,RDT3.Vac_Allocated as Vac_Allocated 
FROM Result_Distribution_Table AS RDT1 
    ,Result_Distribution_Table AS RDT2 
    ,Result_Distribution_Table AS RDT3 
WHERE RDT1.County_Name = RDT2.County_Name AND 
     RDT1.DistributionNumber = 1 AND 
     RDT2.DistributionNumber = 2 AND 
     RDT3.DistributionNumber = 3 AND 
     RDT1.County_Name = RDT3.County_Name 
WHERE Solution_id= "10" 

當我執行此查詢,我得到響應

消息4104,級別16,狀態1,行1
多部分標識符 「Solution_id」 不能被約束。

Solution_id處於Result_Distribution_Table表中的列。

請幫忙,什麼我做錯了什麼解決?

+0

你的意思是在你的查詢中有兩個'WHERE'語句嗎? –

+2

[壞習慣踢:使用舊樣式的JOIN(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins。 aspx) - 使用ANSI - ** 92 ** SQL標準(** 20年前**!)廢止舊式*逗號分隔的表*樣式列表。 ***請停止使用它 –

回答

3

你可以有每個查詢只有一個WHERE條款。還應避免使用舊式加入,而應使用JOIN注意:填寫solution_id col的正確表格alies。

SELECT RDT1.County_Name 
     ,RDT1.DistributionNumber as Dist_No 
     ,RDT1.Vac_Allocated 
     ,RDT1.Priority,RDT2.DistributionNumber as Dist_No 
     ,RDT2.Vac_Allocated as Vac_Allocated 
     ,RDT3.DistributionNumber as Dist_No 
     ,RDT3.Vac_Allocated as Vac_Allocated 
FROM Result_Distribution_Table RDT1 JOIN Result_Distribution_Table RDT2 
     ON RDT1.County_Name = RDT2.County_Name JOIN Result_Distribution_Table RDT3 
     ON RDT1.County_Name = RDT3.County_Name 
WHERE RDT1.DistributionNumber = 1 AND 
     RDT2.DistributionNumber = 2 AND 
     RDT3.DistributionNumber = 3 AND 
     [...].Solution_id= "10" 

補充說:只注意到你正在使用同一個表的3倍。 如果是這種情況您可以得到相同的結果;

SELECT County_Name 
      ,DistributionNumber as Dist_No 
      ,Vac_Allocated 
      ,Priority,RDT2.DistributionNumber as Dist_No 
      ,Vac_Allocated as Vac_Allocated 
      ,DistributionNumber as Dist_No 
      ,Vac_Allocated as Vac_Allocated 
FROM Result_Distribution_Table 
WHERE DistributionNumber IN (1,2,3) AND 
      Solution_id= "10" 
+0

第二個查詢有一個孤立的'RDT2'表引用,不必介意這樣一個事實,即不能從一個表引用獲得相同的輸出(或者不是沒有像'PIVOT' )。 –

0

的問題是因爲在查詢中沒有表:

看起來你忘了,包括您的查詢表。

相關問題