id  name1  name2  name3   name4  name5
实现1   name1
2   name2
3   name3
4   name4
5   name5这样输出

解决方案 »

  1.   

    create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
    returns @temp table(a varchar(100))
    /*--实现split功能 的函数
    --date    :2005-4-20
    --Author :Domino
    */
    as 
    begin
        declare @i int
        set @SourceSql=rtrim(ltrim(@SourceSql))
        set @i=charindex(@StrSeprate,@SourceSql)
        while @i>=1
        begin
            insert @temp values(left(@SourceSql,@i-1))
            set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
            set @i=charindex(@StrSeprate,@SourceSql)
        end
        if @SourceSql<>'\'
           insert @temp values(@SourceSql)
        return 
    end
    select * from dbo.f_split('山东:济南:山东:济南',':')
      

  2.   

    union allselect id , name1 as name from tb 
    union all
    select id , name2 as name from tb
    union all
    select id , name3 as name from tb
    union all
    select id , name4 as name from tb
    union all
    select id , name5 as name from tb
      

  3.   

    select [name] from (
    select [name]=name1 from t1 where id="001"
    union
    select [name]=name2 from t1 where id="001"
    union
    select [name]=name3 from t1 where id="001"
    union
    select [name]=name4 from t1 where id="001"
    union
    select [name]=name5 from t1 where id="001"
    ) tt
      

  4.   

    借助用户定义函数:
    ---------------------------------------------------------------------
    --生成测试数据
    create table 表(部门 int,人员 varchar(20))
    insert into 表 select 1,'张三'
    insert into 表 select 1,'李四'
    insert into 表 select 1,'王五'
    insert into 表 select 2,'赵六'
    insert into 表 select 2,'邓七'
    insert into 表 select 2,'刘八'
    go--创建用户定义函数
    create function f_str(@department int)
    returns varchar(8000)
    as
    begin
        declare @ret varchar(8000)
        set @ret = ''
        select @ret = @ret+','+人员 from 表 where 部门 = @department
        set @ret = stuff(@ret,1,1,'')
        return @ret 
    end
    go
    --执行
    select 部门,人员=dbo.f_str(部门) from 表 group by 部门 order by 部门
    go--输出结果
    /*
    部门  人员
    ----  --------------
    1     张三,李四,王五
    2     赵六,邓七,刘八
    */
    --删除测试数据
    drop function f_str
    drop table 表
    go--楼主,你说的是这种吗?
      

  5.   

    电点星灯的LZ稍微改下就OK了的