2015-01-28 3 views
1

У меня есть запрос, который возвращает идентификаторы проектов, названия проектов и типы проектов. Некоторые проекты имеют несколько типов, поэтому я получаю один и тот же идентификатор проекта несколько раз для некоторых, потому что у них будет более одного типа проекта. Однако у многих проектов есть только один тип.Как я могу сделать дубликаты строк данных в одном столбце

Пример того, что он делает:

| Project_ID | Project_Name | Project_Type | 
| 94850 | Convert to C# | .Net  | 
| 94850 | Convert to C# |  SQL  | 

Вот что я хочу, чтобы это сделать:

| Project_ID | Project_Name | Project_Type | 
| 94850 | Convert to C# | .Net, SQL | 

Я ничего, кроме типа проекта, чтобы быть повернута таким образом, не хотят. Будет ли это что-то для PIVOT или что-то еще?

SELECT PL.Project_ID, 
     PL.Project_Name, 
     PT.Project_Type 
FROM Project_List PL 
INNER JOIN Project_Types PT ON PL.Project_ID = PT.Project_ID 
WHERE ProjectDate BETWEEN (@Start) AND (@End) 
+1

возможно дубликат (http://stackoverflow.com/questions/451415/simulating-group-concat-mysql -функции-в-SQL-сервер) –

ответ

3

Вы можете использовать функцию STUFF() для вашей цели (https://msdn.microsoft.com/en-us/library/ms188043.aspx).

CREATE TABLE #temp (
    Project_ID int, 
    Project_Name nvarchar(255), 
    Project_Type nvarchar(255) 
); 
GO 
INSERT INTO #temp 
SELECT 94850, 'Convert to C#', '.Net' UNION ALL 
SELECT 94850, 'Convert to C#', 'SQL' UNION ALL 
SELECT 94851, 'Convert to Java', 'Java' 
GO 

SELECT 
    Project_ID, 
    Project_Name, 
     STUFF((SELECT ',' + Project_Type FROM #temp tt Where tt.Project_ID = t.Project_Id 
     FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') 
FROM #temp t 
GROUP BY Project_ID, Project_Name; 

DROP table #temp; 

результат: [? Симуляция группа \ _concat функции MySQL в SQL Server]

Project_ID Project_Name Project_Types 
94850 Convert to C# .Net,SQL 
94851 Convert to Java Java 
Смежные вопросы