SELECT-Frage

17/04/2009 - 13:25 von Markus Baechler | Report spam
Hallo NG,

ich habe mal wieder eine Frage zu einem SELECT. Ich möchte mehrere
Datensàtze mit einer SELECT-Klausel zu einem zusammenfassen (wenn das
überhaupt funktioniert). Dazu habe ich zwei Tabellen miteinander verknüpft:

SELECT dbo.Personal.PersName, dbo.Abteilung.Abteilung
FROM dbo.Abteilung INNER JOIN
dbo.Personal ON dbo.Abteilung.PersID =
dbo.Personal.PersID


Ergebnis des SELECT:
Pers 1 ABC
Pers 1 DEF
Pers 1 EFG
Pers 2 TTT


Ich möchte aber folgendes haben:
Pers 1 ABC, DEF, EFG
Pers 2 TTT


Ist das mit einem SELECT-Statement überhaupt möglich?


Vielen Dank!

Gruß,
Markus
 

Lesen sie die antworten

#1 Heiko Heinrich-Nestler
17/04/2009 - 16:01 | Warnen spam
In article , says...

Hallo NG,

ich habe mal wieder eine Frage zu einem SELECT. Ich möchte mehrere
Datensàtze mit einer SELECT-Klausel zu einem zusammenfassen (wenn das
überhaupt funktioniert). Dazu habe ich zwei Tabellen miteinander verknüpft:

SELECT dbo.Personal.PersName, dbo.Abteilung.Abteilung
FROM dbo.Abteilung INNER JOIN
dbo.Personal ON dbo.Abteilung.PersID =
dbo.Personal.PersID


Ergebnis des SELECT:
Pers 1 ABC
Pers 1 DEF
Pers 1 EFG
Pers 2 TTT


Ich möchte aber folgendes haben:
Pers 1 ABC, DEF, EFG
Pers 2 TTT


Ist das mit einem SELECT-Statement überhaupt möglich?


Vielen Dank!

Gruß,
Markus



Hallo Markus,

das würde ich über eine Funktion lösen. Diese könnte wie folgt aussehen:

CREATE FUNCTION dbo.fn_AbtlngListe (@PersId AS INTEGER)
RETURNS VARCHAR(5000)
AS

BEGIN
DECLARE @String AS VARCHAR(5000)

SELECT @String = isNULL(@String +', ', '') + isNULL(t01.Abteilung, '')
FROM dbo.Abteilung t01
WHERE t01.PersID = @PersID
ORDER BY t01.Abteilung

RETURN (@String)
END


GO


Anschliessend kannst Du Deine Abfrage umstellen

SELECT t01.PersName, Abteilungen = dbo.fn_AbtlngListe(t01.PersID)
FROM dbo.Personal t01




Schöne Grüße aus Bayern


Heiko Heinrich-Nestler

XING: http://www.xing.com/profile/Heiko_HeinrichNestler

Ähnliche fragen