我具有SQL Server 2008表等列到逗号分隔值的分区由ID
EmployeeCertificationHistoryId EmployeeCertificationID EmployeeID CertificationID CertificationDate
1 244 2192 1 2/15/2006
2 185 2058 87 4/10/2010
3 245 2240 102 8/11/2013
4 246 2249 104 11/23/2005
5 247 2221 101 6/12/2013
6 248 2238 84 NULL
7 245 2240 102 8/11/2013
8 249 2240 102 8/4/2013
10 253 2175 84 6/19/2013
11 254 2239 105 2/5/2011
12 255 2239 111 11/22/2012
9 96 1468 92 12/6/2010
13 256 2239 110 11/22/2012
我需要逗号单独certificationid每雇员。例如 。对于2239 => 105,111,110
我已经写了一个查询,但它给一个列中的所有证书ID。我的查询是
SELECT STUFF(
(SELECT ',' + CAST(C.CertificationID AS VARCHAR(100))
FROM tbl_PM_EmployeeCertificationMatrixHistory C
ORDER BY c.CertificationID
FOR XML PATH('')),1,1,'') AS CSV
GO
我只需要employeeid和certificationid.but但我无法整理出来。
是不是需要额外处理一个额外的'SELECT DISTINCT'子查询? – TTeeple
实际上,在外部查询中执行'distinct'是额外的处理。这将首先生成不同的列表,然后为每个单独的员工生成子查询。把不同的外部可能会导致表中的每一行运行子查询,然后做不同。 –
有道理!我评论完后检查了执行计划,现在我看到了。 http://puu.sh/6DJxk.png谢谢! – TTeeple