2013-10-02 46 views
0

我有如下表:查詢轉換數百萬行的水平

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

,我需要這樣一個結果:

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

只是,如果你能給我用什麼提示,無需編寫代碼

請考慮到我在我的表中有數百萬條記錄

感謝

+0

你已經找到了答案:支點。如果你遇到困難,你可以嘗試一些代碼並詢問它。 – Kuzgun

+0

我正在使用SQL Server。那麼這個「樞軸」是否會成爲一張表中數百萬記錄的理想解決方案呢? –

回答

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 
+0

你的答案編號相當不錯.. +1鼓勵你..但請使用代碼格式**({})**部分,而你回答..有關代碼塊格式化的更多信息請參閱此.. http:///meta.stackexchange.com/a/22189/232122 – Dhaval

+0

感謝Dhaval格式化結果..我是新來的Stackoverflow .. :) –

+0

這就是爲什麼我把你的信息鏈接,你可以看看鏈接if你希望..並再次感謝您的回答 – Dhaval