en subselect kan ju bara returnera ett värde men, går det att returnera flera värden som en kommaseparerad sträng?
subselect med flera värden
5 svar · 457 visningar · startad av doggelito
Ja, det är bara att konkatenera i din select.
SELECT foo,
(SELECT foo + ',' + bar + ',' + foobar FROM tblFoo) AS fooBarFooBar
FROM tblBanana
Jag var visst lite otydlig!
Jag menar flera värden av samma kolumn.
Ex.
En person har två bilar.
Databas: en persontabell och en biltabell.
Svaret ska bli:
ID Person Bilar
1 Adam Volvo, Saab
SQL server I presume
Om du vill hämta data för flera personer så får du skriva en egen funktion som gör konkatenerigen. Om du vill ha tillbaka en rad så går det direkt med lite SQL.
Det kan exempelvis se ut såhär
CREATE FUNCTION [dbo].[GetListOfAUsersCars](@userId [int])
RETURNS [varchar](1000) AS
begin
DECLARE @cars varchar(1000)
SELECT
@cars = COALESCE(@cars + ',', '') + CAST(carname AS varchar(5))
FROM
userscars
WHERE
userId = @userId
RETURN @cars
end
SELECT
username, dbo.GetListOfAUsersCars(userid)
FROM
users
finemang! :bire