Listing 1: Cursor Code for String Concatenation -- Note: In SQL Server 2000, use VARCHAR(8000) instead of VARCHAR(MAX) SET NOCOUNT ON; USE Northwind; DECLARE @Result TABLE(CustomerID NCHAR(5), ArrOrders VARCHAR(MAX)); DECLARE @CustomerID AS NCHAR(10), @PrvCustomerID AS NCHAR(10), @OrderID AS INT, @ArrOrders AS VARCHAR(MAX); DECLARE C CURSOR FAST_FORWARD FOR SELECT CustomerID, OrderID FROM dbo.Orders ORDER BY CustomerID, OrderID; OPEN C FETCH NEXT FROM C INTO @CustomerID, @OrderID; SELECT @PrvCustomerID = @CustomerID, @ArrOrders = ''; WHILE @@fetch_status = 0 BEGIN IF @CustomerID <> @PrvCustomerID BEGIN INSERT INTO @Result VALUES(@PrvCustomerID, STUFF(@ArrOrders, 1, 1, '')); SELECT @PrvCustomerID = @CustomerID, @ArrOrders = ''; END SET @ArrOrders = @ArrOrders + ',' + CAST(@OrderID AS VARCHAR(MAX)); FETCH NEXT FROM C INTO @CustomerID, @OrderID; END IF @PrvCustomerID IS NOT NULL INSERT INTO @Result VALUES(@PrvCustomerID, STUFF(@ArrOrders, 1, 1, '')); CLOSE C; DEALLOCATE C; SELECT CustomerID, ArrOrders FROM @Result;