请大家给我看下以下语句为何报错,谢谢大家了!
消息 102,级别 15,状态 1,第 2 行
'/' 附近有语法错误。
消息 102,级别 15,状态 1,第 3 行
'n' 附近有语法错误。
declare @sql varchar(8000)
select @sql = isnull(@sql + ',' , '') + Class from Elearning_AnswerSheet group by Class
exec ('select m.* , n.平均分 from
(select * from (select Store,Name,Code,Mark from Elearning_AnswerSheet) a pivot (AVG(Mark) for Class in (' + @sql + ')) b) m , 
(select Store,Name,Code,avg(Mark) as 平均分 from Elearning_AnswerSheet group by Store,Name,Code) n
where m.Store = n.Store and m.Name=n.Name and m.Code=n.Code')

解决方案 »

  1.   


    declare @sql varchar(8000)
    select @sql = isnull(@sql + ',' , '') + Class from Elearning_AnswerSheet group by Class
    exec ('select m.* , n.平均分 from
    (select * from (select Store,Name,Code,Mark from Elearning_AnswerSheet) a pivot (AVG(Mark) for Class in (' + @sql + ')) b) m ,  
    (select Store,Name,Code,avg(Mark) as 平均分 from Elearning_AnswerSheet group by Store,Name,Code) n 
       where m.Store = n.Store and m.Name=n.Name and m.Code=n.Code) tb ')
    --try
      

  2.   

    declare @sql varchar(8000)
    select @sql = isnull(@sql + '],[' , '') +  Class from Elearning_AnswerSheet group by Class 
    set @sql =  '[' + @sql + ']'
    exec ('select m.* , n.平均分 from
    (select * from (select Store,Name,Code,Mark from Elearning_AnswerSheet) a pivot (AVG(Mark) for Class in (' + @sql + ')) b) m ,  
    (select Store,Name,Code,avg(Mark) as 平均分 from Elearning_AnswerSheet group by Store,Name,Code) n
    where m.Store = n.Store and m.Name=n.Name and m.Code=n.Code')
      

  3.   

    试了下1#的还是提示语法错,2楼的漏了个字段Class,正确的如下:
    declare @sql varchar(8000)
    select @sql = isnull(@sql + '],[' , '') +  Class from Elearning_AnswerSheet group by Class 
    set @sql =  '[' + @sql + ']'
    exec ('select m.* , n.平均分 from
    (select * from (select Store,Name,Code,Mark,Class from Elearning_AnswerSheet) a pivot (AVG(Mark) for Class in (' + @sql + ')) b) m ,  
    (select Store,Name,Code,avg(Mark) as 平均分 from Elearning_AnswerSheet group by Store,Name,Code) n
    where m.Store = n.Store and m.Name=n.Name and m.Code=n.Code')
      

  4.   

    调试时print出来执行就知道哪里错了。
      

  5.   

    另外我想问下:
    SBJ05 张三 普通店员 12SS1 0.000000 0.000000 0.000000 2.750000 0.000000 2.000000 2.200000 1.666666 1.91
    SSH05 范春艳 普通店员 12SS1 2.142857 2.833333 3.000000 3.000000 3.000000 2.571428 3.200000 2.000000 2.73
    这里取道的都是6位小数,是否可以四舍五入到2位,谢谢!