declare @s varchar(8000)
set @s=''
select @s=@s+','+[Empid] from [Employee]
print stuff(@s,1,1,'')

解决方案 »

  1.   

    declare @s varchar(8000)
    set @s=''
    select @s=@+','+rtrim([Empid]) from [Employee]print stuff(@s,1,1,'')
      

  2.   

    --竖表变行表
    --创建表
    create table A(
    工号 varchar(20),
    日期 smalldatetime,
    时间 varchar(20)
    )
    --插入测试数据
    insert into A select '01', '2004-10-01', '07:50'
    union select '01', '2004-10-01', '11:35'
    union select '01', '2004-10-01', '14:20'
    union select '01', '2004-10-02', '08:01'
    union select '01', '2004-10-02', '14:30'
    union select '02', '2004-10-01', '07:55'
    union select '02', '2004-10-02', '07:58'
    union select '03', '2004-10-01', '07:56'
    --创建存储过程
    create proc p_t
    as
    declare @id varchar(20),@date smalldatetime,@time varchar(50)
    select * into #a from A order by 工号,日期,时间
    update #a set 时间=case when (工号=@id) and (日期=@date) then @time else 时间 end,
    @time=case when (工号=@id) and (日期=@date) then @time+','+时间 else 时间 end,
    @id=工号,@date=日期
    select 工号,日期,max(时间) as 时间 from #a group by 工号,日期 order by 工号
    --执行
    exec p_t
    --测试结果
    工号 日期 时间
    ---------------------------------------------
    01 2004-10-01 00:00:00 07:50,11:35,14:20
    01 2004-10-02 00:00:00 08:01,14:30
    02 2004-10-01 00:00:00 07:55
    02 2004-10-02 00:00:00 07:58
    03 2004-10-01 00:00:00 07:56
    (所影响的行数为 5 行)
      

  3.   

    declare @sql varchar(2000)
    set @sql=''
    select @sql=@sql+[Empid]+',' from [Employee]
    set @sql=left(@sql,len(@sql)-1)
    print @sql
      

  4.   

    不好意思.忘了说.
    可以不用变量,不用存储过程.
    用一条 SQL 吗?