declare @sql varchar(1000)
set @sql=''
select @sql=@sql+','+房号 from 房间  
set  @sql=stuff(@sql,1,1,'')exec('select '+@sql+' from 表 group by 楼层')

解决方案 »

  1.   

    就是让同一楼的房间显示在一行上如果用 select 楼层,房号 from 房间,那些房间会显示好几行
      

  2.   

    --建立测试环境
    Create table 房间
    (房号 Varchar(10),
     楼层 Int)
    --插入数据
    Insert 房间 Values('101',     1)
    Insert 房间 Values('102',     1)
    Insert 房间 Values('103',     1)
    Insert 房间 Values('202',     2)
    Insert 房间 Values('303',     3)
    GO
    --建立函数
    Create Function Get(@Floor Int)
    Returns Varchar(1000)
    AS
    Begin
        Declare @S Varchar(1000)
        Set @S=''
        Select @S=@S+房号+'   ' from 房间 Where 楼层=@Floor Order By 房号
        Return Rtrim(@S)
    End
    GO
    --测试
    Select 楼层,dbo.Get(楼层) As 房号 from 房间 Group By 楼层 Order By 楼层
    --删除测试环境
    Drop Table 房间
    Drop Function Get
    --结果
    /*
    楼层 房号
    1 101   102   103
    2 202
    3 303
    */