declare @sql varchar(255),@field  varchar(50)
declare tt cursor for select distinct comshortname from datasaleareaopen tt 
fetch tt into @field
set @sql = ' create table aa ( '
while @@fetch_status=0
begin
  set @sql = @sql +@field+' varchar(50),'
  fetch tt into @field
end
close tt
deallocate tt
set @sql = left(@sql, LEN(@sql)-1)
set @sql = @sql+')'
exec(@sql)//在SQL Server 2k下测试通过!!

解决方案 »

  1.   

    declare @sql varchar(255),@field  varchar(50)
    declare tt cursor for select distinct comshortname from datasaleareaopen tt 
    fetch first tt into @field
    set @sql = ' create table aa ( '
    while @@fetch_status=0
    begin
      set @sql = @sql +@field+' varchar(50),  '
      fetch next tt into @field
    end
    close tt
    deallocate tt
    set @sql = @sql+')'
    exec(@sql)
      

  2.   

    你那错在没",":
    declare @sql varchar(255),@field  varchar(50)
    set @sql = ' create table aa ( '
    select @sql=@sql+comshortname+' varchar(50),' from (select distinct comshortname from datasalearea) aset @sql=left(@sql,len(@sql)-1)+')'
    exec(@sql)
      

  3.   

    to CoolSlob(CoolSlob.NET\
    在sql查询分析器中执行有下列错误:
    服务器: 消息 170,级别 15,状态 1,行 1
    第 1 行: '01' 附近有语法错误。
      

  4.   

    我faint~~我的语句中根本没有“01”是不是你自己留下来的??!
      

  5.   

    我也觉得奇怪呀,我的语句就是这么写的呀
    CREATE PROCEDURE  mobzsale AS
    declare @sql varchar(255),@field  varchar(50)
    declare tt cursor for select distinct comShortName from datasaleareaopen tt 
    fetch tt into @field
    set @sql = ' create table aa ( '
    while @@fetch_status=0
    begin
      set @sql = @sql +@field+' varchar(50),'
      fetch tt into @field
    end
    close tt
    deallocate tt
    set @sql = left(@sql, LEN(@sql)-1)
    set @sql = @sql+')'
    exec(@sql)
    GO
    可他就是提示有错,是不是这个表datasalearea有问题??
      

  6.   

    set @sql = left(@sql, LEN(@sql)-1)
    set @sql = @sql+')'print @sql --看一下@SQL生成的结果
    --exec(@sql)
      

  7.   

    错误原因:
      你的表datasalearea中comShortName字段的值不是以字符开头!
      可能你的表中的值是诸如01等。解决方法:
      1、新comShortName字段的值改为以字母开头。
      2、修改语句set @sql = @sql +'[' +@field+'] varchar(50),'//前后加个[]符号!
      

  8.   

    over.//累死我了:(
    //这年头想蹭点分不容易呀~~
      

  9.   

    1、你可以使用上面提到的第二种解决方法
    2、使用SUBSTRING函数,去掉前两位数字。
    修改语句:
    set @sql = @sql + SUBSTRING(@field, 3, LEN(@field) - 2) +' varchar(50),'
    //上述语句未测试~~~
      

  10.   

    I服了YOU~~你刷新一下!!