用变量连接可以完成。
一条语句难以实现,如果只有4条记录,那么:select 
(select col1 from AA where 字段='记录1')
+ ',' +
(select col1 from AA where 字段='记录2')
+ ',' +
(select col1 from AA where 字段='记录3')
+ ',' +
(select col1 from AA where 字段='记录4')

解决方案 »

  1.   

    -- 或者:
    select 
    max(case when 字段='记录1' then col1 end) 
    + ',' +
    max(case when 字段='记录2' then col1 end) 
    + ',' +
    max(case when 字段='记录3' then col1 end) 
    + ',' +
    max(case when 字段='记录4' then col1 end) 
    from AA
      

  2.   

    -- 建立测试表
    create table AA(记录 varchar(10),col1 varchar(10))
    insert AA values('记录1','a')
    insert AA values('记录2','b')
    insert AA values('记录3','c')
    insert AA values('记录4','d')select * from AA-- 一般是通过以下方法实现
    declare @col varchar(8000)
    set @col=''
    select @col = @col + col1 + ',' from AA
    if @col=''
    set @col=','
    select left(@col,len(@col)-1)-- 一条语句方法一
    select 
    (select col1 from AA where 记录='记录1')
    + ',' +
    (select col1 from AA where 记录='记录2')
    + ',' +
    (select col1 from AA where 记录='记录3')
    + ',' +
    (select col1 from AA where 记录='记录4')-- 一条语句方法二
    select 
    max(case when 记录='记录1' then col1 end) 
    + ',' +
    max(case when 记录='记录2' then col1 end) 
    + ',' +
    max(case when 记录='记录3' then col1 end) 
    + ',' +
    max(case when 记录='记录4' then col1 end) 
    from AAdrop table AA
      

  3.   

    试一下declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+case when 1=1 then rtrim(AAcol1)+',' else '' end from AA
    select @sql
      

  4.   

    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+','+AAcol1 from AA
    set @sql=right(@sql,len(@sql)-1)
    select @sql
      

  5.   

    create table AA (AAcoll char(2))
    insert AA values('a')
    insert AA values('b')
    insert AA values('c')
    insert AA values('d')
    drop table AA
    select * from AA
    declare @sql varchar(200) 
    select @sql=''
    select @sql = @sql + ',' + AAcoll from AA
    set @sql = right(@sql,len(@sql) - 1)
    select @sql
      

  6.   

    一句SQL语句不好办。
    为什么要这么限定呢?用存储过程的话可以很轻松地做到?为什么不要?
      

  7.   

    --这个算一句吧?declare @ varchar(8000) set @='' select @=@+','+aacoll from AA select substring(@,2,8000)
      

  8.   

    --测试
    declare @AA table(AAcoll char(2))
    insert @AA values('a')
    insert @AA values('b')
    insert @AA values('c')
    insert @AA values('d')--查询
    declare @ varchar(8000) set @='' select @=@+','+aacoll from @aa select substring(@,2,8000)/*--测试结果
    ---------------------
    a ,b ,c ,d (所影响的行数为 1 行)--*/