Wie zum verketten von strings aus mehreren Zeilen in eine Spalte + inner join in einer Abfrage
Ich habe eine Abfrage mit folgendem Ergebnis:
Abfrage:
SELECT Tasks.TaskId, Comments.Comment, comments.timespent
FROM comments
INNER JOIN tasks ON comments.entityid = tasks.taskid
WHERE ( comments.entity = 1 )
GROUP BY Tasks.TaskId, Comments.Comment, comments.timespent
Ergebnis:
TaskID Comment TimeSpent
__________________________
111754 C1 4
111754 C2 1
111754 C3 79
Bitte sagen Sie mir, wie soll ich schreiben meine Abfrage, um das Ergebnis wie folgt:
TaskID Comment TimeSpent
__________________________________
111754 ,C1,C2,C3 84
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist die funktionierende SQL Fiddle: http://sqlfiddle.com/#!3/3597a/3
Hier die eigentlichen SQL.
Tabelle erstellen und Füllen von Daten
Ausführen von SQL
Ergebnisse Anzeigen.
Sollten Sie schauen, in
FÜR das XML-PATH
.Können Sie mit CROSS APPLY mit XML-Pfad wie z.B.:
Ok, das ist ein bisschen mehr kompliziert, aber es muss nicht xml verwenden, und es kann verwendet werden mit anderen Datenbanken als sql server:
Anderen Ansatz, der funktioniert nur mit sql-server wäre der Aufbau eines Aggregates CLR-Funktion, die verkettet die Werte: http://msdn.microsoft.com/en-us/library/91e6taax%28v=vs.90%29.aspx.
Wenn man stieß auf diesen Artikel, aber Sie verwenden oracle, haben Sie die option, um die Abfrage oben oder definieren Sie eine benutzerdefinierte Aggregat-Funktion in pl/sql (http://docs.oracle.com/cd/B28359_01/appdev.111/b28425/aggr_functions.htm).