SqlServer中这样统计:
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、网页空间、营销软件、网站建设、铁西网站维护、网站推广。
select name from sysobjects where xtype='U'
要知道总数的话就简单了:
select count(*) from sysobjects where xtype='U'
Oracle中这样查询:
Select * From user_tables;
select a.plate_number 车牌,isnull(b.超速,0)超速,isnull(c.超载,0)超载
from car_report a left join
(select plate_number,COUNT(*) as 超速 from exceed_report group by plate_number) b
on a.plate_number=b.plate_number left join
(select plate_number,COUNT(*) as 超载 from associat_report group by plate_number) c
on a.plate_number=c.plate_number
--查询所有用户定义表
select * from sys.objects Where type='U' And type_desc='USER_TABLE'
--用户定义表个数
select Count(0) as '用户定义表的个数' from sys.objects Where type='U' And type_desc='USER_TABLE'
sys.object是系统表,记录用户创建了哪些对象,这个表里会存:表、索引、存储过程、函数
不过sys.object只有08及其以后的版本才支持,05及以前的版本都是用的Sysobjects
名字差不多,性质一样
查数据库ProjectsA中的表数量写上完全限定名就好了
ProjectsA.sys.sysobjects,其他的和之前一样
select * from ProjectsA.sys.sysobjects Where type='U' And type_desc='USER_TABLE'
select Count(0) from ProjectsA.sys.sysobjects Where type='U' And type_desc='USER_TABLE'
至于status的作用,看这里
select '分公司ID',COUNT(*) AS '订单数量' from Orders
where OrderTimeCONVERT(nvarchar(10),year(GETDATE()))+'-'+CONVERT(nvarchar(10),month(GETDATE()))+'-01'
and OrderTimeGETDATE()
group by '分公司ID'
1、查询SQL中的所有表: Select TABLE_NAME FROM 数据库名称.INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE' 执行之后,就可以看到数据库中所有属于自己建的表的名称 2、查询SQL中所有表及列: Select dbo.sysobjects.name as Table_name, dbo.syscolumns.name AS Column_name FROM dbo.syscolumns INNER JOIN dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id Where (dbo.sysobjects.xtype = 'u') AND (NOT (dbo.sysobjects.name LIKE 'dtproperties')) 3、在Sql查询分析器,还有一个简单的查询方法: EXEC sp_MSforeachtable @command1="sp_spaceused '?'" 执行完之后,就可以看到数据库中所有用户表的信息 4、查询总存储过程数:select count(*) 总存储过程数 from sysobjects where xtype='p' 附:xtype类型D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束L = 日志FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程S = 系统表TF = 表函数
TR = 触发器U = 用户表UQ = UNIQUE 约束(类型是 K)V = 视图X = 扩展存储过程 另:在sqlserver中取得某个数据库中所有表名的sql语句 select sysobjects.name from sysobjects.xtype ='U';SELECT name
WHERE (xtype = 'U') 在数据库的sysobjects表里有这个数据库全部表的信息, xtype值为'U'的就是表名 注意:一般通过上述方法获得全部用户表示都会有一个dtproperties表,SQLSERVER 默认它也是用户表,想要从用户表中排出,需要加上限定条件 status0,即:select * from sysobjects where xtype='U' and status0
可以有两种解决方法,
所需工具:SQL
查询两个count的方法1:
SELECT paperName , COUNT (1) AS 总题数 , sum (CASE WHEN statu = 1 THEN 1 ELSE 0 END) AS 审核题数FROM questionGROUP BY paperNme
查询两个count的方法2:
select s.总题数, s.审核题数, s.paperNamefrom (select COUNT(1) as 总题数, case when status = 1 then count(1) else 0 end as 审核题数, paperNamefrom question--where papername in (select distinct paperName from question), 这个条件可以不要了group by paperNme, stauts -- status也要作为分组字段,因为在case中有使用) s