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