DECLARE @list varchar(1000), @sql varchar(1000) SELECT @list = @list + ',' + a.au_id
                                                       FROM authors a
                                                       ORDER BY phone
SET @sql = 'select ' + RIGHT(@list, len(@list) - 1) + ' from authors' EXEC (@sql)
========================================
上面想实现根据pubs的authors里的phone字段排序,然后汇总au_id排序后的结果!但我在sql 2000中运行上面的代码,并没有返回(显示)结果!请问那里错了

解决方案 »

  1.   

    DECLARE @list varchar(1000), @sql varchar(1000) 
    SET @list=''  --加上这一句;否则@list的初值为NULL,NULL+Any = NULL
    SELECT @list = @list + ',['+a.au_id+']'
    FROM authors a
    ORDER BY phoneSET @sql = 'select ' + RIGHT(@list, len(@list) - 1) + ' from authors' 
    print @sql
    EXEC (@sql)
      

  2.   

    @list 没有初始值吧set @list = ''
      

  3.   

    @list为null值了.DECLARE @list varchar(1000), @sql varchar(1000) 
    set @list=''                                --<<改了这句>>
    SELECT @list = @list + ',' + a.au_id
    FROM authors a
    ORDER BY phone
    SET @sql = 'select ' + RIGHT(@list, len(@list) - 1) + ' from authors' 
    EXEC (@sql)
      

  4.   

    用libin_ftsafe的SQL语句
    ============================================================
    DECLARE @list varchar(1000), @sql varchar(1000) 
    SET @list=''  --加上这一句;否则@list的初值为NULL,NULL+Any = NULL
    SELECT @list = @list + ',['+a.au_id+']'
    FROM authors a
    ORDER BY phoneSET @sql = 'select ' + RIGHT(@list, len(@list) - 1) + ' from authors' 
    print @sql
    EXEC (@sql)
    =====================================
    实现根据pubs的authors里的phone字段排序,然后汇总au_id排序后的结果!
    但现在还是没有显示结果
      

  5.   

    究竟怎么实现据pubs的authors里的phone字段排序,然后汇总au_id排序后的结果!
      

  6.   

    汇总au_id排序后的结果
    =====================
    这句是什么意思,把字符串串起来???
      

  7.   

    //现在改成这样子了,但提示"必须声明变量 '@sql'。"还是不行
    declare @sql varchar(1000)
    set @sql='select au_id '
    select @sql=@sql+ 'from authors order by phone
    select @sql=@sql+' from authors
    exec(@sql)
      

  8.   

    上面完全是错的,感觉应该是"gahade(沙果)"这样写;但确实没结果
    DECLARE @list varchar(1000), @sql varchar(1000) 
    set @list=''
    SELECT @list = @list + ',' + a.au_id
    FROM authors a
    ORDER BY phone
    SET @sql = 'select ' + RIGHT(@list, len(@list) - 1) + ' from authors' 
    EXEC (@sql)