首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

自学SQL SERVER的新手提几个小问题,求解答

2012-08-15 
自学SQL SERVER的新手提几个问题,求解答。问题1:SQL codeIF OBJECT_ID(Table_Name) IS NOT NULLdrop tabl

自学SQL SERVER的新手提几个问题,求解答。
问题1:

SQL code
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:
SQL code
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 + ...),是这个意思吗?


万分感谢!!!

[解决办法]
@isMan = CASE WHEN A0107 = '男' THEN 1 ELSE 0 END 当时男人返回1否则返回0
SUM(@isMan) = 男人总数

[解决办法]
1.object_id()是系統函數,而當前數據庫的系統表sysobjects
都支持所有對象,只是sysobjects按xtype區分不同的數據庫對象類型
2.SUM(CASE WHEN A0107 = '男' THEN 1
ELSE 0
END) '男人数' 
統計所有A0107列的值為男的數量
[解决办法]
SQL code
--问题1OBJECT_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求所有条件为真的记录的和 

热点排行