SQL Server - Concatenare righe in colonne

Cosa faccio se voglio ottenere in un campo di una query il contenuto di una subquery che restituisce più righe? Ad esempio se voglio ottenere l’elenco dei prodotti venduti da un fornitore dalla tabella products del database Northwind?

Fino a ieri avrei fatto un cursore che interroga la tabella e concatena il risultato all’interno di una variabile; oggi un mio collega ha scoperto che esiste un metodo molto più semplice:

 

declare @productsName AS varchar(200)

 

select @productsName = COALESCE(@productsName, '') + ProductName + ','

      from products where supplierid = 7

 

select @productsName

 

Il risultato è esattamente quello che serviva:

 

---------------------------------------------------------------------

Pavlova,Alice Mutton,Carnarvon Tigers,Vegie-spread,Outback Lager,

 

(1 row(s) affected)

 

Da oggi prometto di non utilizzare più i cursori in queste situazioni.

 

Technorati Tags: ,
«gennaio»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910