2013-04-26 31 views
1

我有這個表有2列,ParameterID和HDFID。使用SQL替換來模擬組連接,但得到錯誤的結果

ParameterID HDFID 
7 1 
7 2 
7 3 
32 1 
32 3 
42 1 
42 2 
42 3 
44 1 
44 2 
44 3 
48 1 
48 2 
48 3 
51 1 
51 2 
51 3 
52 1 
52 2 
52 3 

我希望把它變成

ParameterID HDFID 
7   1/2/3/ 
32   1/3/ 
42   1/2/3/ 
44   1/2/3/ 
48   1/2/3/ 
51   1/2/3/ 
52   1/2/3/ 

,但是這是我得到。

ParameterID HDFID 
7   1/2/3/1/3/3/2/1/1/2/3/3/2/1/1/2/3/3/2/1 
32   1/2/3/1/3/3/2/1/1/2/3/3/2/1/1/2/3/3/2/1 
42   1/2/3/1/3/3/2/1/1/2/3/3/2/1/1/2/3/3/2/1 
44   1/2/3/1/3/3/2/1/1/2/3/3/2/1/1/2/3/3/2/1 
48   1/2/3/1/3/3/2/1/1/2/3/3/2/1/1/2/3/3/2/1 
51   1/2/3/1/3/3/2/1/1/2/3/3/2/1/1/2/3/3/2/1 
52   1/2/3/1/3/3/2/1/1/2/3/3/2/1/1/2/3/3/2/1 

這是我的代碼,

SELECT  ParameterID, HDFID = REPLACE 
          ((SELECT HDFID AS [data()] 
           FROM HDfParameters b 
           WHERE b.ParameterID = ParameterID 
           ORDER BY b.ParameterID FOR xml path('')), ' ', '/') 
FROM   HDfParameters 
WHERE  ParameterID IS NOT NULL 
GROUP BY ParameterID 

回答

1

你失蹤內外查詢之間的相關性。因爲WHERE b.ParameterID = **ParameterID**沒有前綴,所以實際上是b.ParameterID,因爲「b」在內部查詢中。

SELECT  ParameterID, HDFID = REPLACE 
          ((SELECT HDFID AS [data()] 
           FROM HDfParameters b 
           WHERE b.ParameterID = HDfParameters.ParameterID 
           ORDER BY ParameterID FOR xml path('')), ' ', '/') 
FROM   HDfParameters 
WHERE  ParameterID IS NOT NULL 
GROUP BY ParameterID 
+0

就是這樣。很多。 – 2013-04-26 08:37:04

相關問題