1

我有这张表,有 2 列,ParameterID 和 HDFID。

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
4

1 回答 1

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
于 2013-04-26T08:33:04.143 回答