兩種方法:
1: 用FUNCTION
CREATE FUNCTION getItem
(@dian nvarchar(15),@zhiwei nvarchar(50))
RETURNS nvarchar(500) AS
BEGIN declare @all nvarchar(500)
set @all=''
select @all=@all+ 姓名 + ' ' from uTable
where 分店名称=@dian and 职位=@zhiweireturn @all
END---then select 分店名称 ,职位,count(*),dbo.getitem(分店名称 ,职位) as 人员名单
from Utable
1: 用FUNCTION
CREATE FUNCTION getItem
(@dian nvarchar(15),@zhiwei nvarchar(50))
RETURNS nvarchar(500) AS
BEGIN declare @all nvarchar(500)
set @all=''
select @all=@all+ 姓名 + ' ' from uTable
where 分店名称=@dian and 职位=@zhiweireturn @all
END---then select 分店名称 ,职位,count(*),dbo.getitem(分店名称 ,职位) as 人员名单
from Utable
select 分店名称 ,职位,count(*),dbo.getitem(分店名称 ,职位) as 人员名单
from Utable
group by 分店名称 ,职位
create function getstr(@店名称 Nvarchar(100),@职位 Nvarchar(100))
returns Nvarchar(2000)
as
begin
declare @str Nvarchar(2000)
set @str=N''
select @str=@str+N' '+rtrim( 姓名) from table
where 分店名称=@店名称 and 职位=@职位
--set @str=right(@str,len(@str)-1)
return @str
end
GO调用:select 分店名称,职位,count(*) as 人数,dbo.getstr(分店名称,职位) as 人员名单 from table group by 分店名称,职位
into #temp
from Utable group by 分店名称 ,职位 select distinct 人员名单 as man into #tp from Utable
declare @man nvarchar(50)
while exists(select * from #tp)
begin
select top 1 @man = man from #tp
update #temp set allMan = allMan + @man + ''
from Utable as U
where 分店名称= U.分店名称 and 职位=U.职位 and U.姓名=@man
delete #tp where man=@man
end select * from #temp
drop table #temp,#tp
declare @tempname varchar(20),@temppos varchar(20),@tempmd varchar(20)
declare @temptable table(分店名称 varchar(20),职位 varchar(20),人数 int,人员名单 varchar(50))
declare @renshu int,@mingdan varchar(50)
declare MyCursor CURSOR
global scroll static
for SELECT * from top ORDER BY 分店名称,职位
open MyCursor
declare @name varchar(20)
declare @pos varchar(20)
declare @md varchar(20)
fetch next from MyCursor
into @tempname,@temppos,@tempmd
select @renshu=1,@mingdan=@tempmd
fetch next from MyCursor
into @name,@pos,@md while(@@fetch_status=0)
begin
if (@tempname<>@name or @temppos<>@pos)
begin
insert into @temptable values (@tempname,@temppos,@renshu,@mingdan)
select @tempname=@name,@temppos=@pos,@renshu=1,@mingdan=@md
end
else
select @renshu=@renshu+1,@mingdan=@mingdan+@md fetch next from MyCursor
into @name,@pos,@md
end
close MyCursor
deallocate MyCursor insert into @temptable values (@tempname,@temppos,@renshu,@mingdan)
select * from @temptable
create function getstr(@店名称 Nvarchar(100),@职位 Nvarchar(100))
returns Nvarchar(2000)
as
begin
declare @str Nvarchar(2000)
set @str=N''
select @str=@str+N' '+rtrim( 姓名) from table
where 分店名称=@店名称 and 职位=@职位
set @str=right(@str,len(@str)-1)
return @str
end
GO调用:select 分店名称,职位,count(*) 人数,dbo.getstr(分店名称,职位) 人员名单 from table group by 分店名称,职位