临时表的创建和使用与”普通“表没太大的区别,表名加一两个#即可
可以用select * from # 先是临时表来查内容

解决方案 »

  1.   

    你的select语句出错了,要用sum,怎么没有gruop by语句啊可以用select * from #temp
      

  2.   

    麻烦大家说详细一点,或者你给出问题的解答(用临时表),我刚学sql,所以先感谢大家
      

  3.   

    select cast(cast((sum(进来的女生数)-sum(出去的女生数)) as numeric(10,2))/(sum(进来的女生数)+sum(进来的男生数)-sum(出去的女生数)-sum(出去的男生数)) as numeric(10,2)) as 女生所占比例 from 原表
      

  4.   

    select cast(cast((sum(进来的女生数)-sum(出去的女生数)) as numeric(10,2))/(sum(进来的女生数)+sum(进来的男生数)-sum(出去的女生数)-sum(出去的男生数)) as numeric(10,2)) as 女生所占比例 into #临时表 from 原表
    select * from #临时表
      

  5.   

    select ....(你想选择的字段) into #temp from table(你要用的原表)这里#temp就是临时表,你可以像用一般的表一样用它
    另外,在用sum,max等这样的聚集函数的时候要用gruop by把你要聚集的这些数据分类,这样才能ok。先把select学好就是了;)
      

  6.   

    临时表是在TempDB中创建的表。临时表的名称都以“#”开头。临时表的范围为创建临时表的连接。因为,临时表不能在两个连接之间共享,一旦连接关闭,临时表就会被丢弃。如果临时表被创建于存储过程之中,则临时表的范围在存储过程之中,或者被该存储过程调用的任何存储过程之中。如果需要在连接之间共享临时表,则需要使用全局的临时表。全局的临时表以“##”符号开头,它将一直存在于数据库中,直到SQL Server重新启动。一旦这类临时表创建之后,所有的用户都可以访问到。在临时表上不能明确地指明权限。 临时表提供了存储中间结果的能力。有时候,临时表还能通过将一个复杂的查询分解成两个查询而获得性能的改善。这可以通过首先将第一个查询的结果存在临时表中,然后在第二个查询中使用临时表来实现。当一个大表中的某个子集在一个在座过程中使用多次时,建议使用临时表。在这种情况下,在临时表中保持数据的子集,以在随后的连接中使用,这样能大大改善性能。还可以在临时表中创建索引。 
      

  7.   

    chao778899(220330)我按你的做法出来了结果,但能否把结果转化为百分数?谢谢!
    另外以下语句有何错误:
      select sum(进去的女生数)-sum(出去的女生数) as 女生数 into #a  from 原表为何提示as 附近有错误?
      

  8.   

    再 /100 不就可以吗?
    你这样就可以了:select sum(进去的女生数-出去的女生数) as '女生数' into #a  from 原表
      

  9.   

    select cast(cast((sum(进来的女生数)-sum(出去的女生数)) as numeric(10,2))/(sum(进来的女生数)+sum(进来的男生数)-sum(出去的女生数)-sum(出去的男生数)) as numeric(10,2))*100 as 女生所占比例 into #临时表 from 原表
    select * from #临时表
    另:
     select sum(进去的女生数)-sum(出去的女生数) as 女生数 into #a  from 原表
    没有错误啊:)
      

  10.   

    或者:
    select convert(char(5),cast(cast((sum(进来的女生数)-sum(出去的女生数)) as numeric(10,2))/(sum(进来的女生数)+sum(进来的男生数)-sum(出去的女生数)-sum(出去的男生数)) as numeric(10,2))*100)+'%' as 女生所占比例 into #临时表 from 原表