我有这个表有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
答案 0 :(得分: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