MSSQL:declare @BBB varchar(20)
set @BBB = ''
select @BBB = @BBB + ',' + BBB from TableName where AAA = 'w'
select AAA,substring(@BBB,2,len(@BBB)) BBB from TableName where AAA = 'w'
/***************************************************/
天空中没有留下痕迹,
但我的心已飞过.
/***************************************************/

解决方案 »

  1.   

    select AAA,substring(@BBB,2,len(@BBB)) BBB from TableName where AAA = 'w'
    这句不是很懂,能不能讲讲,或者简单点,谢谢啦!
      

  2.   

    这种旋转表的问题不适合用SQL语句来完成, 实际上这在数据中称为PIVOT, 通常是报表工具中常用的功能, 很多报表工具如CRYSTAL REPORT/BRIO REPORT都提供了这种功能.
      

  3.   

    我在程序中要用到,只有通过sql来完成,也不知道有没有它法?
      

  4.   


    弱水兄:可否知道CRYSTAL REPORT何处有down?Hoozi:
    你将语句运行一下不就明白了?
      

  5.   

    可能贴主的意思AAA不止一个值吧?
    若只有一个值,上面的方法可以实现,不止一个的话就这样:
    declare @str as varchar(8000)
    select aaa, min(bbb) as bbb into #temp from mytable group by aaa
    declare @aaa as varchar(10)
    declare abc cursor  for select aaa from mytable
    open abc
    FETCH NEXT FROM abc INTO @aaa
    WHILE @@FETCH_STATUS = 0
    BEGIN   select @str=''
       select @str=@str+','+rtrim(bbb) from mytable where aaa=@aaa
       update #temp set bbb=right(@str,len(@str)-1) where aaa=@aaa   FETCH NEXT FROM abc INTO @aaaend
    CLOSE abc
    DEALLOCATE abc
    select * from #temp
    drop table #temp
      

  6.   

    IronPromises(铁诺):
    网站上应该有的. 几年前我用CRYSTAL REPORT比较多,现在改用BRIO了
      

  7.   

    是的,aaa不止只有w,还有别的值.只是...只是有没有简单点的方法,(比如说我看得懂的:])我原以为只要一句话就可以搞定的。(...摇着头说...)
      

  8.   


    按钮,你的cursor有误.
    没有按AAA分组.
      

  9.   

    IronPromises(铁诺):分组了啊,再看看?
    我试过结果是对的啊?
      

  10.   

     icevi(按钮工厂)(女) 是对的。
      

  11.   

    我想知道: icevi(按钮工厂)(女) 是哪的??可以告诉我吗?????
      

  12.   

    declare @str as varchar(8000)
    select aaa, min(bbb) as bbb into #temp from mytable group by aaa
    declare @aaa as varchar(10)
    declare abc cursor  for select aaa from mytable   -- 應該為declare abc cursor  for select aaa from mytable group by aaa或者select distinct aaa from mytable否則效率會低N倍 ~~~open abc
    FETCH NEXT FROM abc INTO @aaa
    WHILE @@FETCH_STATUS = 0
    BEGIN  select @str=''
      select @str=@str+','+rtrim(bbb) from mytable where aaa=@aaa
      update #temp set bbb=right(@str,len(@str)-1) where aaa=@aaa  FETCH NEXT FROM abc INTO @aaaend
    CLOSE abc
    DEALLOCATE abc
    select * from #temp
    drop table #temp