我有一个包含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发布于 2013-04-26 16:33:04
您忽略了内部查询和外部查询之间的相关性。因为您的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 ParameterIDhttps://stackoverflow.com/questions/16231991
复制相似问题