I'm beginning to wonder if this is even possible. Here's what I'm trying to do.
Let's say I have two tables, customers and orders.
Customers
--------------
CustId Name
------------------------
1 John Doe
2 Jim Smith
3 Joey Tribiani
Orders
---------------
OrderId CustId Product Name
---------------------------------------------------
1 1 toothbrush
2 1 toothpaste
3 1 floss
4 2 computer
5 2 keyboard
6 2 mouse
7 3 tv
8 3 dvd player
9 3 vcr
What I want is a list of customers, with a comma separated field of all of the products they have purchased, like below:
1 Jon Doe toothbrush,toothpaste,floss
2 Jim Smith computer,keyboard,mouse
3 Joey Tribiani tv,dvdplayer,vcr
I know I can do this in a user defined function by passing in a customer id, looping through the products and returning the comma separated string. But I'm trying to find a universal way to do this so that I wouldn't need a udf for every instance. I think ideally and aggregate function would be a good solution, but SQL 2000 doesn't allow user-defined aggregate functions.
Any ideas?
[...]
DECLARE @tmp varchar(2000)
select @tmp = COALESCE(@tmp + ',' + [Product Name], [Product Name]) from Orders WHERE CustId=@CustId
RETURN @tmp
And then use
SELECT CustId, Name, YourFunction(CustId) FROM Customers