Ich versuche, alle Mitarbeiter mit einer bestimmten 'Interaction' aufgelistet Ich möchte die Mitarbeiter in einer Zeile mit Komma trennen, ich habe die folgende Abfrage, die funktioniert, ist aber sehr langsam .Verketten von Ergebnissen in einer durch Komma getrennten Liste
SELECT
CONVERT(VARCHAR(254),
COALESCE(
STUFF(
(
SELECT
', ' + LTRIM(RTRIM(REPLACE(emp1.Full_Name,CHAR(9),'')))
FROM Employee emp1 WITH (nolock)
JOIN Rn_Int_Employee rie WITH (nolock) on emp1.Employee_Id = rie.Employee_Id
WHERE rnint.Rn_Interactions_Id = rie.Rn_Interactions_Id
GROUP BY emp1.Full_Name
ORDER BY emp1.Full_Name
FOR XML PATH (''),TYPE).value('text()[1]', 'nvarchar(max)'), 1, 2, '')
,STUFF((
SELECT
', ' + LTRIM(RTRIM(REPLACE(emp1.Full_Name,CHAR(9),'')))
FROM Employee emp1 WITH (nolock)
WHERE rnint.Rn_Create_User=emp1.Rn_Employee_User_Id
GROUP BY emp1.Full_Name
ORDER BY emp1.Full_Name
FOR XML PATH (''),TYPE).value('text()[1]', 'nvarchar(max)'), 1, 2, '')))
AS Employees
FROM Rn_Interactions rnint
Hat jemand irgendwelche Empfehlungen für eine effizientere Art, dies zu tun?
Sie können versuchen, codereview.stackexchange.com – JeffUK
Buchen Sie Ihre Tabelle DDL (einschließlich Indizes) und fügen Sie die versionsspezifische SQL Server-Tag. –
effizient? Ist das eine zeitaufwendige Abfrage? Wo ist der Flaschenhals (siehe Ausführungsplan)? –