答案 0 :(得分:3)
虽然聚合字符串连接是最常用的方法,但如果每empid
只有两个值,则可以这样做:
select empid,
(min(attcode + ':' + cast(count as varchar(255)) + ' & ' +
max(attcode + ':' + cast(count as varchar(255))
) as str
from t
group by empid;
这不是一般解决方案,但如果您为每个组提供示例两个值,它可能会解决您的问题。
答案 1 :(得分:1)
这适用于任意数量的ATTCode:
;WITH cte AS (
SELECT *
FROM (VALUES
(1, 'CL', 10),
(1, 'SL', 20),
(2, 'CL', 9),
(2, 'SL', 2)) as t(EmpId, ATTCode, [Count])
)
select DISTINCT c.EmpId,
REPLACE(STUFF((SELECT ',' + ATTCode +':'+CAST([Count] as nvarchar(5))
FROM cte s
WHERE s.EmpId = c.EmpId
FOR XML PATH('')),1,1,''),',',' & ') as [Str]
from cte c
结果:
EmpId Str
----------- ----------------
1 CL:10 & SL:20
2 CL:9 & SL:2
(2 row(s) affected)