--1.创建一个合并的函数
create function fmerg(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+cast(SiblingGroupID as varchar) from 学生表 where id=@id
set @str=right(@str,len(@str)-1)
return(@str)
go--调用自定义函数得到结果
select distinct 学号,dbo.fmerg(SiblingGroupID) from 学生表

解决方案 »

  1.   

    select * from 学生库 where SiblingGroupID in (select SiblingGroupID from 学生库 group by SiblingGroupID having count(*)>1)
      

  2.   

    谢谢你们!
    其实我最终的目的是想在水晶表里打印出来,Sibling(兄弟姐妹)放在一格里,
    也说是想把重复记录转横
      

  3.   

    而且我是想把它的Sibling(兄弟姐妹)的基本情况找到,不是找到有Sibling(兄弟姐妹)学生
      

  4.   

    转横,就是交叉表啦.
    假设你的学生表中有两个字段:Sibling,name
    要将Sibling相同的name转横.--为数据处理生成临时表
    select id=identity(int,1,1),Sibling,name into #tb from 学生表--生成查询的查询语句
    declare @i int,@im varchar(20),@sql varchar(8000)select @sql='',@i=aa,@im=cast(aa-1 as varchar)
    from(select top 1 Sibling,count(Sibling) as aa
            from #tb group by Sibling order by count(Sibling) desc) awhile @i>0
        select @sql=char(13)+',max(case id % '+@im+' when '+cast(@i-1 as varchar)
    +' then name end) as [name'+cast(@i as varchar)+']'+@sql
    ,@i=@i-1
    set @sql='select Sibling'+char(13)+@sql
    +char(13)+'from #tb group by Sibling'--执行生成的SQL语句,得到结果
    exec(@sql)