Well just to put in query terms what wagner have just suggested
DECLARE @AllPhones VARCHAR(1000),@Count INT,@maxcount int,@mincount int,@codname varchar(100),@rowcounted int,
@Row int,@codename varchar(100)
SET @AllPhones = ''
create table #Results(codname varchar(1000), PhoneNo varchar(1000))
create table #TempTbl(rowid int identity(1,1),
codname varchar(1000), rowcounted int)
create table #TempTbl2(rowid int identity(1,1),
codname varchar(1000), phonenumber varchar(100))
insert into #TempTbl
SELECT TU.codName , count(*)
FROM dbo.tblPhone P
INNER JOIN dbo.tblUser TU ON P.codUser = TU.codUser
INNER JOIN dbo.tblPhoneType PT ON P.codPhoneType = PT.codPhoneType
group by TU.codName
insert into #TempTbl2
SELECT TU.codName ,
CASE WHEN P.ListThisNumber = 1
THEN P.PhoneNumber ELSE '***********'END
FROM dbo.tblPhone P
INNER JOIN dbo.tblUser TU ON P.codUser = TU.codUser
INNER JOIN dbo.tblPhoneType PT ON P.codPhoneType = PT.codPhoneType
select @mincount = min(rowid) from #TempTbl
select @maxcount = max(rowid) from #TEmpTbl
select @Count = @mincount
While @Count < = @maxcount
begin
select @codename = codname , @rowcounted = rowcounted
from #TempTbl
where rowid = @Count
select @AllPhones = @AllPhones + ISNULL(phonenumber,'') + ','
from #TempTbl2
where codname = @codename
insert into #Results values(@codename , @AllPhones)
set @Count = @Count + 1
SET @codename = ''
SET @AllPhones = ''
end
select * from #Results
drop table #TempTbl
drop table #TempTbl2
drop table #Results
Well this is ofcourse not a pretty query ...nevertheless worth a look and definitely an alternate solution to cursors.....