Ich arbeite derzeit an einer Abfrage in T-SQL auf SQL Server 2012. Ich sammle mehrere Titel aus einer Tabelle über eine Verknüpfung von einer anderen Tabelle. Meine Tabellen wie folgt aussehen:T-SQL Concat 2 Zeilen mit derselben ID von Join
Tabelle Projekt:
ProjectId |
-----------+
1 |
2 |
3 |
Tabelle ProjectResources
ResourceId | Label | ProjectId
-----------+---------------+-----------
2 | Resource X | 1
3 | Resource Y | 1
4 | Resource Z | 2
5 | Resource A | 2
6 | Resource X | 3
die gewünschte Ausgabe in meiner temporären Tabelle sollte wie folgt aussehen:
ProjectId | Label |
-----------+--------------------------+
1 | Resource X, Resource Y |
2 | Resource Z, Resource A |
3 | Resource X |
Ich möchte alle Labels concattieren mit derselben ProjectId. Meine aktuelle Abfrage sieht wie folgt aus:
CREATE TABLE #tmpProjects
(
ProjectId INT
, Label VARCHAR(1000)
)
SELECT [P].ProjectId, [PR].Label
INTO #tmpProjects
FROM [MySchema].[ProjectResources] [PR]
INNER JOIN dbo.Project [P] ON [P].ProjectId= [PR].ProjectId
Leider erstellt meine Abfrage eine neue Zeile für jedes Resouce Label. Wissen Sie, wie Sie eine neue temporäre Tabelle mit "verknüpften" zusammengeführten Zeilen für jede Ressource erstellen, die dieselbe ProjectId enthält?
Vielen Dank!
, keine Zeilen Sie fragen, wie man verketten Spalten nutzen könnten. Es gibt verschiedene Techniken, die in [Gruppierte Verkettung in SQL Server] (https://sqlperformance.com/2014/08/t-sql-queries/sql-server-grouped-concatenation) von Aaron Bertrand beschrieben und verglichen werden. Die schnellste Technik verwendet SQLCLR, das zweitschnellste XML. 'STRING_AGG' wird nativ unterstützt in der nächsten Version von SQL Server, SQL Server 2017 –