webForumDet fria alternativet

Komma separerad select

5 svar · 445 visningar · startad av Addeladde

AddeladdeMedlem sedan jan. 20013 406 inlägg
#1

Hej

Följande sql-sats ger en komma separerad lista.

DECLARE @listStr VARCHAR(MAX)
SELECT 	@listStr = COALESCE(@listStr+',' , '') + NumberCols
FROM	NumberTable
SELECT 	@listStr

Men om jag skulle vilja kunna få ut denna komma separerade lista i en annan select sats hur gör jag då?

Select t.*, (Select kommasepareradlista) As lista from tabell
emissionMedlem sedan dec. 19996 721 inlägg
#2

Du får nog förklara lite mer. Vill du att de värden som ingår i den kommaseparade listan ska baseras på något i den använda tabellen?

DMBS?

AddeladdeMedlem sedan jan. 20013 406 inlägg
#3

Hej

DMBS = MS SQL-Server 2005

Japp jag vill att värdena ska baseras på den använda tabellen.

Exempel:

Select t.*, (Select kommasepareradlista where id = t.id) As lista from tabell
TravoniMedlem sedan okt. 20041 556 inlägg
#4

Titta på denna funktion:
http://www.webforum.nu/showthread.php?p=996051#post996051

emissionMedlem sedan dec. 19996 721 inlägg
#5

För det första så måste jag å det bestämdaste avråda från att arbeta med kommaseparerade värden i databasen. I det här fallet verkar de mer handla om att plocka ut värden, och då kan det funka, men själva konkateneringen är något man gärna kan överlämna till andra lager än databasen.

COALESCE-varianten är fin, men kan inte användas i ett SELECT-kontext, eftersom den bygger på tilldelning av variabler etc. I stället får du skapa en UDF som kör COALESCE-varianten, eller (eftersom det är SQL Server 2005) så skapar du en egen aggregatfunktion med CREATE AGGREGATE.

http://msdn2.microsoft.com/en-us/library/ms182741.aspx

AddeladdeMedlem sedan jan. 20013 406 inlägg
#6

Okej Tack jag ska titta på detta ikväll.
Sitter upptagen med annat nu.

En annan lösning har varit att joina tabellerna och sedan plocka ihop det i C# koden när man lägger in det i klassen.

/Andreas

131 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)