有表TB1 
  列1 
   a
   b
   c
   d想用一个语句直接查询到以下结果TB2:
   列1
 a,b,c,d意思是想把一列的所有内容用一查询语句可以把它列出来,就一个选项。
     

解决方案 »

  1.   

    declare @s varchar(1000)select @s=isnull(@s+',','')+列1 from tb1select @s
      

  2.   

    declare @sql nvarchar(1000)
    set @sql=''
    select @sql=@sql+','+列1 from TB1
      

  3.   

    ---测试数据---
    if object_id('[tb1]') is not null drop table [tb1]
    go
    create table [tb1]([列1] varchar(1))
    insert [tb1]
    select 'a' union all
    select 'b' union all
    select 'c' union all
    select 'd'
     
    ---查询---
    declare @s varchar(1000)select @s=isnull(@s+',','')+列1 from tb1select @s as 列1
    /**
    列1 
    ------------------------------------
    a,b,c,d(所影响的行数为 1 行)
    **/
      

  4.   

    create table #TB1
    (
      col char(10)
    )
    insert into #TB1 select 'a'
    insert into #TB1 select 'b'
    insert into #TB1 select 'c'
    insert into #TB1 select 'd'
    declare @sql nvarchar(1000)
    set @sql=''
    select @sql=@sql+','+col from #TB1
    select stuff(@sql,1,1,'')
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    a         ,b         ,c         ,d         (1 行受影响)
      

  5.   


    declare @str varchar(1000)
    select @str = @str + ',' + cast(col1 as varchar) from tb
    set  right(@str , len(@str) - 1)
    select @str