c# sql临时表的创建和查询问题。

代码:
SqlCommand cmd = new SqlCommand("select 班级,sum(人数) as 人数 into ##临时表 from 班级资料 group by 班级", con);

SqlCommand cmd0 = new SqlCommand("select * from ##临时表 where 班级='一班'", con);
SqlDataAdapter sda0 = new SqlDataAdapter(cmd0);
DataSet ds0 = new DataSet();
sda0.Fill(ds0,"t");

int sum0 = Convert.ToInt32(ds0.Tables[0].Rows[0]["人数"]);
SqlCommand cmddro = new SqlCommand("drop table ##临时表", con);

1、直接运行,提示:对象名 '##临时表' 无效。
2、若先在sql数据库中运行:select 班级,sum(人数) as 人数 into ##临时表 from 班级资料 group by 班级,则能正常运行。

初步怀疑代码"select 班级,sum(人数) as 人数 into ##临时表 from 班级资料 group by 班级"没运行成功。
求各位高手指导。。。

第1个回答  2014-06-14
断点调试一下什么问题就出来了
第2个回答  2014-06-14
"select 班级,sum(人数) as 人数 into ##临时表 from 班级资料 group by 班级
去掉into XX零时表,group by 这里会报错(XX不包含在聚合函数中)说明有语法问题,丢SQL测试下就好了追问

谢谢~
我在sql中尝试过,运行“select 班级,sum(人数) as 人数 into ##临时表 from 班级资料 group by 班级”,然后再运行"select * from ##临时表", 出来结果是正确的。纠结啊。。。

追答

我测试了你的问题,这样写就可以了,加一个;把另一个语句放在它后面。结果如下:

 

 

但是我不建议你用这种方式,原因:

你这样的话等于在SQL又建立了一张表,具体如下,你后面再这样写应该就会出现我下面的这个问题,XX零时表已经存在。

 

建议这样写

select 班级,sum(人数) as 人数 from 班级资料 where  班级='一班' group by 班级,直接搜索你想要的。

追问

谢谢你,那我怎么才能读出这个sum(人数)这个结果呢?

其实我要建立这个临时表,目的是想sum统计后形成这个临时表,再从这个表中读取各个班级的sum值。如果无法形成临时表,我就无法得出这个sum值了。

追答

select 班级,sum(人数) as 人数 from 班级资料 where 班级='一班' group by 班级
现在这个语句的结果等同于
select 班级,sum(人数) as 人数 into ##临时表 from 班级资料 group by 班级
加上
select * from ##临时表

追问

那我如何获取的sum(人数)的值,例如要获取‘一班’的人数。

本回答被提问者和网友采纳
相似回答