2013-10-02 2 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. Так будет ли «опорная точка» идеальным решением для миллионов записей в 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 
+0

ваш ответ id довольно хорошо .. +1, чтобы поощрить вас .. но, пожалуйста, используйте форматирование кода ** ({}) ** часть, пока вы отвечаете .. для получения дополнительной информации о форматировании кода кода см. Это .. http://meta.stackexchange.com/a/22189/232122 – Dhaval

+0

Спасибо Dhaval за форматирование результатов. Я новичок в Stackoverflow .. :) –

+0

Вот почему я добавил ссылку для вашей информации, вы можете посмотреть ссылку, если вы хотите .. и снова спасибо за ваш ответ – Dhaval

Смежные вопросы