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:
SQL Server,
SQL
posted @ mercoledì 10 gennaio 2007 17:25