0

我有下表:

RECID OBJECTIF  
1001  1001  
1001  1002  
1001  1003  
2001  2001  
2001  2002  

我需要这样的结果:

RECID MyFIELD  
1001  1001-1002-1003  
2001  2001-2002  

只要你能给我一个关于使用什么的提示,就不需要写代码

请考虑到我的表中有数百万条记录

谢谢

4

1 回答 1

2

给你....我不确定数百万条记录的性能...但我仍然觉得这比使用基于游标的方法要好....

SELECT * FROM [PivotSample]

RECID   OBJECTIFSEQUENCE
1001    1002    1
1001    1003    3
1001    1001    2
2001    2001    3
2001    2002    4
2001    2003    2
2001    2004    1

答案查询如下..

SELECT [RECID]
      ,STUFF((SELECT '- ' + CAST([OBJECTIF] AS varchar), REPLACE(MAX(SEQUENCE),MAX(SEQUENCE),'') FROM [PivotSample] B  WHERE B.[RECID]=A.[RECID] 
        GROUP BY [OBJECTIF],SEQUENCE ORDER BY SEQUENCE  FOR XML PATH('')), 1, 1, '' ) AS OBJECTIVE 
  FROM [PivotSample] A
GROUP BY [RECID]

RECID   OBJECTIVE
1001     1002- 1001- 1003
2001     2004- 2003- 2001- 2002
于 2013-10-02T11:29:30.543 回答