我有下表:
RECID OBJECTIF
1001 1001
1001 1002
1001 1003
2001 2001
2001 2002
我需要这样的结果:
RECID MyFIELD
1001 1001-1002-1003
2001 2001-2002
只要你能给我一个关于使用什么的提示,就不需要写代码
请考虑到我的表中有数百万条记录
谢谢
我有下表:
RECID OBJECTIF
1001 1001
1001 1002
1001 1003
2001 2001
2001 2002
我需要这样的结果:
RECID MyFIELD
1001 1001-1002-1003
2001 2001-2002
只要你能给我一个关于使用什么的提示,就不需要写代码
请考虑到我的表中有数百万条记录
谢谢
给你....我不确定数百万条记录的性能...但我仍然觉得这比使用基于游标的方法要好....
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