日期:2014-05-18 浏览次数:20619 次
IF OBJECT_ID('Table_Name') IS NOT NULL drop table Table_Name 与 if exists (select * from sysobjects where name = 'Table_Name' and xtype = 'U') drop table 'Table_Name'
SELECT COUNT(A0107) '总人数' , SUM(CASE WHEN A0107 = '男' THEN 1 ELSE 0 END) '男人数' , SUM(CASE WHEN A0107 = '男' THEN 1 ELSE 0 END) * 1.0 / COUNT(*) '男所占比率' , SUM(CASE WHEN A0107 = '女' THEN 1 ELSE 0 END) '女人数' , SUM(CASE WHEN A0107 = '女' THEN 1 ELSE 0 END) * 1.0 / COUNT(*) '女所占比率' FROM dbo.A01 中的 SUM(CASE WHEN A0107 = '男' THEN 1 ELSE 0 END) '男人数' 是什么个算法?意思是 把每次的为真的次数相加,然后得出总数? sum(1 + 1 + 1 + ...),是这个意思吗?
--问题1 OBJECT_ID是系统函数,返回架构范围内对象的数据库对象标识号 sysobjects包含该数据库中的所有对象,如表 存储过程 视图 等信息 IF OBJECT_ID('Table_Name') IS NOT NULL drop table Table_Name 与 if exists (select * from sysobjects where name = 'Table_Name' and xtype = 'U') drop table 'Table_Name' 就相当于是分别根据名字和编号区别一个实体表,第一个更简洁。 --问题2 你的理解没问题,就是判断条件为真的,就记录一次,最后sum求所有条件为真的记录的和