写个方法比较容易,不知道SQL能不能!

解决方案 »

  1.   

    要使用游标,最好还是自己在程序里实现
    以前实现过一个类似的,楼主自己参考吧--数据库说明:数据库名是qq,数据表名是hbh,含有字符型字段b
    --实现功能:将数据表hbh中的b的字符串连接成一个新的字符串,再回填给b--打开数据库qq
      USE qq
    GO
      --定义游标
      DECLARE hbh_cursor CURSOR FOR SELECT  b FROM hbh
        OPEN hbh_cursor
         --下移游标
         FETCH NEXT FROM hbh_cursor
         --定义一个长度为1000的字符串变量
         DECLARE @MyVar varchar(1000)
         set @MyVar=''
         --检查FETCH 语句成功。
         WHILE @@FETCH_STATUS =0 
         BEGIN
              --将当前游标的字段b的值累加到变量
              update hbh  set @MyVar=@MyVar+b  where CURRENT OF hbh_cursor 
              --下移游标
              FETCH NEXT FROM hbh_cursor  
         END
         --把变量值赋值给字段b
         UPDATE hbh SET b=@MyVar 
        CLOSE hbh_cursor
      DEALLOCATE hbh_cursor
    GO
    --不能将b按照不重复的字符连接起来
    --迂回策略:先将表b导出成不重复的表b1
    --即:SELECT DISTINCT b INTO hbh1 FROM hbh
      

  2.   

    在存储过程里做交叉表 看看这个例子
    declare @sql varchar(8000)set @sql = 'select name,' select @sql = @sql + 'sum(case subject when '''+subject+'''                           then source else 0 end) as '''+subject+''','  from (select distinct subject from test) as aprint @sql select @sql = left(@sql,len(@sql)-1) + ' from test group by name'exec(@sql)
    END
    go
      

  3.   

    sql语句你要到数据库板块去问,肯定能解决,
    不过在程序里实现要比在数据库里实现效率高