24. november 2005 - 14:54
Der er
5 kommentarer og 1 løsning
SQL: Få resultatet fra en subselect ind i et felt
Hej SQL-eksperter Jeg har 2 tabeller, med følgende testdata. Tabellen Tasks: Task_id tekst 1 aktivitet 1 2 aktivitet 2 Tabellen Obstructions Obs_id tekst task_id 11 obs 1 1 12 obs 2 1 Task_id i opbstructions-tabellen peger på task_id i task-tabellen. Dvs jeg kan have flere obstructions til en task. Mit problem er at jeg gerne vil kunne udskrive min tasktabel således: Task_id tekst obs_text 1 aktivitet 1 obs 1, obs 2 2 aktivitet 2 dvs, jeg skal have lavet en subselect der udskriver alle obstructions for en given task med komma i mellem. Jeg kan få det til at virke, hvis jeg laver en slect der returnerer en top 1, men hvordan får jeg flere resulateter med??
Annonceindlæg fra Cognizant
24. november 2005 - 18:58
#2
Du kan med fordel bruge en cursor til det lav det "yderste" select i en cursor - while-løkke med fetch, og så for hver record her en select på nummer to.
25. november 2005 - 09:53
#4
Hvis du kan leve med at have en function så er her en relativt elegant løsning: -- En udf der returnerer en kommasepareret liste af obstructions for en task CREATE FUNCTION dbo.obstruction_list(@task_id int) RETURNS varchar(8000) AS BEGIN DECLARE @s varchar(8000) SELECT @s = ISNULL(@s+ ',', '') + tekst FROM Obstructions WHERE task_id = @task_id RETURN @s END ----- Den kan så kaldes sådan her: SELECT Task_id, tekst, dbo.obstruction_list(Task_id) FROM Tasks