Try the following:
The COUNT()
Returns integer
value, you can't merge int
with varchar
. So you have to convert
the value to char
.
SELECT STUFF((SELECT ',' + CAST(COUNT(E.EMployeeId) AS VARCHAR) FROM EMployee E WHERE E.DepartmentId IN(SELECT DepartmentId FROM Department)
FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'),1,1,'')
Try this answer, If you face any issue, mention in the comments:
SELECT DISTINCT DepartmentId,
STUFF(
(
SELECT ',' + CAST(COUNT(E.EMployeeId) AS VARCHAR)
FROM EMployee E
WHERE E.DepartmentId IN(SELECT DepartmentId FROM Department)
AND E.DepartmentId=T.DepartmentId
FOR XML PATH(''), TYPE
), 1, 1, '') AS id_list
FROM EMployee as T
Try this one for, both department and COUNT()
in Comma separated:
SELECT STUFF((SELECT ',' + CAST((DepartmentId)AS VARCHAR)
FROM(
SELECT DepartmentId,COUNT(EMployeeId) EMployeeId
FROM EMployee E
WHERE E.DepartmentId IN(SELECT DepartmentId FROM Department)
GROUP BY DepartmentId
)E
FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'),1,1,'') DepID
,STUFF((SELECT ',' + CAST((EMployeeId)AS VARCHAR)
FROM(
SELECT DepartmentId,COUNT(EMployeeId) EMployeeId
FROM EMployee E
WHERE E.DepartmentId IN(SELECT DepartmentId FROM Department)
GROUP BY DepartmentId
)E
FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'),1,1,'')EmpCount