I have a table employee: that contains one column and three rows. How can I transform it using SELECT to display only one row and one column, with comma delimited strings: John, Mike, Dale?
There are a number of ways to complete what you wish. Some features that you can take advantage of include:
select with CASE and MAX
User defined functions
SELECT with FOR XML syntax (better in SQL 2005 than SQL 2000)
PIVOT
Transact SQL SELECT extensions|||Very Cool, Thanks.|||
Just for the sake of completeness, this can also be achieved via cursors:
Assuming #Employee temp table contains the data.
declare @.sql varchar(200), @.k int
set @.sql = ''
set @.k = 0
declare @.EmpName varchar(50)
declare abc cursor for select EmployeeName from #Employee
open abc
fetch next from abc into @.EmpName
while @.@.FETCH_STATUS = 0
begin
if @.k > 0 set @.SQL = @.SQL +', '
set @.SQL = @.SQL + @.EmpName
set @.k = @.k +1
fetch next from abc into @.EmpName
end
close abc
deallocate abc
SELECT @.SQL as Employees
Drop Table #Employee
|||
Code Snippet
declare @.Output varchar(max)
select @.Output = isnull(@.Output + ', ' + [Employee Name] , [Employee Name] )
from MyTable
select @.Output as [OneColumn]
No comments:
Post a Comment