SQL 分组查询并把结果连接成字符串解决思路

SQL 分组查询并把结果连接成字符串
 Keywords  f_sourceID
A                        1
A                         2
B                          2
B                         1
C                         1
C                         2
C                          3
转化成
Keywords  f_sourceID
A                        1,2
B                          1,2
C                         1,2,3
我用的是
select Keywords,STUFF(
(select ','+f_sourceID
FROM clear  a
WHERE b.Keywords =a.Keywords 
FOR XML PATH('')),1,1,'')f_sourceID
FROM clear b
group by Keywords
但是我要处理的数据有上万行,处理速度很慢,50分钟才1300,有没有效率高点的方法呢?
我是菜鸟,请大家帮忙看下~多谢
 
------解决思路----------------------
试下游标,只需要 分组一次,遍历一次~~
------解决思路----------------------
WITH clear AS (
    SELECT *
       FROM (   SELECT CHAR(number) keywords
                  FROM master..spt_values
                 WHERE type = 'p'
                   AND number BETWEEN 65 AND 90
            ) a,
            (   SELECT Convert(varchar(11),number) f_sourceID
                  FROM master..spt_values
                 WHERE type = 'p'
                   AND number BETWEEN 1 AND 385
            ) b
)
select Keywords,STUFF(
(select ','+f_sourceID
FROM clear  a
WHERE b.Keywords =a.Keywords 
FOR XML PATH('')),1,1,'')f_sourceID
FROM clear b
group by Keywords

造了1万数据,结果毫无延迟。
下面的查询要多久?
你在这个test表达式上做字符串连接试试。
WITH test AS (
    SELECT keywords, f_sourceID
      FROM clear
  ORDER BY keywords, f_sourceID
)
SELECT * FROM test