SELECT  ID=identity(int,1,1),DefectClasses.ClassId,  DefectClasses.ChineseName,  DefectSamples.Class,    
           COUNT(DefectSamples.Class)  AS  MyCount  
into #temp
FROM  DefectSamples  INNER  JOIN  
           DefectClasses  ON  DefectSamples.Class  =  DefectClasses.ClassId  
WHERE  (DefectSamples.Verified  =  1)  
GROUP  BY  DefectSamples.Class,  DefectClasses.ClassId,  DefectClasses.ChineseName
select * from #temp
drop table #temlp

解决方案 »

  1.   

    不行,报错:服务器: 消息 2714,级别 16,状态 6,行 1
    数据库中已存在名为 '#temp' 的对象。
      

  2.   

    哦,是可以的,改个temp名字就好了。有没有不用临时表的方法?
      

  3.   

    SELECT  identity(1,1),DefectClasses.ClassId,  DefectClasses.ChineseName,  DefectSamples.Class,    
               COUNT(DefectSamples.Class)  AS  MyCount  
    FROM  DefectSamples  INNER  JOIN  
               DefectClasses  ON  DefectSamples.Class  =  DefectClasses.ClassId  
    WHERE  (DefectSamples.Verified  =  1)  
    GROUP  BY  DefectSamples.Class,  DefectClasses.ClassId,  DefectClasses.ChineseName
      

  4.   

    SELECT  序号=identity(int,1,1), DefectClasses.ClassId, DefectClasses.ChineseName, DefectSamples.Class,    
               COUNT(DefectSamples.Class)  AS  MyCount  
    into #temp5
    FROM  DefectSamples  INNER  JOIN  
               DefectClasses  ON  DefectSamples.Class  =  DefectClasses.ClassId  
    WHERE  (DefectSamples.Verified  =  1)  
    GROUP  BY  DefectSamples.Class,  DefectClasses.ClassId,  DefectClasses.ChineseNameselect * from #temp5
    union  all  
    SELECT '合计' as 序号, null  as  ClassId,  null  as  ChineseName,  null  as  Class,    
               COUNT(DefectSamples.Class)  AS  MyCount  
    FROM  DefectSamples  INNER  JOIN  
               DefectClasses  ON  DefectSamples.Class  =  DefectClasses.ClassId  
    WHERE  (DefectSamples.Verified  =  1)drop table #temp5请大家看上面的SQL语句错在什么地方?报错信息为:
    “服务器: 消息 245,级别 16,状态 1,行 9
    将 varchar 值 '合计' 转换为数据类型为 int 的列时发生语法错误。”
      

  5.   

    union  all  
    SELECT '' , '',  '',  '合计;',    
               COUNT(DefectSamples.Class)  AS  MyCount  
    FROM  DefectSamples  INNER  JOIN  
               DefectClasses  ON  DefectSamples.Class  =  DefectClasses.ClassId  
    WHERE  (DefectSamples.Verified  =  1)
    但是这样,第一列好想会自动增加一个0
      

  6.   

    是的,我也看明白了。可是我希望的就是在第一个列最后显示“合计”,可是这样的字符类型又和 序号=identity(int,1,1)冲突了,能不能把第一个字段的类型改成字符varchar,而又有自动增长的方法呢?
      

  7.   

    其实用前台程序在显示的时候加这个字段可能更容易,用临时表还是用SELECT子查询我觉得都不是好办法。
      

  8.   

    select cast(id as varchar) as id , ... from #temp
    union all
    SELECT '合计' as 序号, null  as  ClassId,  null  as  ChineseName,  null  as  Class,    
               COUNT(DefectSamples.Class)  AS  MyCount  
    FROM  DefectSamples  INNER  JOIN  
               DefectClasses  ON  DefectSamples.Class  =  DefectClasses.ClassId  
    WHERE  (DefectSamples.Verified  =  1)