具体看你什么数据库了,还有你字段1,字段2,字段3哪个字段是字符类型的。
为常州等地区用户提供了全套网页设计制作服务,及常州网站建设行业解决方案。主营业务为成都网站建设、网站设计、常州网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
比如字段3是字符类型:
oracle写法:
SELECT 字段1,字段2,字段3 FROM 打印数据表 where 打印时间='2018-09-01' AND 打印时间'2018-09-19'
union all
select null,null,'合计:'||count(*) from 打印数据表 where 打印时间='2018-09-01' AND 打印时间'2018-09-19'
mysql写法:
SELECT 字段1,字段2,字段3 FROM 打印数据表 where 打印时间='2018-09-01' AND 打印时间'2018-09-19'
union all
select null,null,concat('合计:',(cast(count(*) as varchar) from 打印数据表 where 打印时间='2018-09-01' AND 打印时间'2018-09-19'
sqlserver写法:
SELECT 字段1,字段2,字段3 FROM 打印数据表 where 打印时间='2018-09-01' AND 打印时间'2018-09-19'
union all
select null,null,'合计:'+(cast(count(*) as varchar) from 打印数据表 where 打印时间='2018-09-01' AND 打印时间'2018-09-19'
创建存储过程:
CREATE PROCEDURE [dbo].[sys_viewTableSpace]
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE [dbo].#tableinfo(
表名 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
记录数 [int] NULL,
预留空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
使用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
索引占用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
未用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL
)
insert into #tableinfo(表名, 记录数, 预留空间, 使用空间, 索引占用空间, 未用空间)
exec sp_MSforeachtable "exec sp_spaceused '?'"
select * from #tableinfo
order by 记录数 desc
drop table #tableinfo
END
使用的时候直接 :exec sys_viewtablespace
select d.name as 表名,COUNT (*)as 记录 from syscolumns a inner join sysobjects d on a.id = d.id and d.xtype = 'U'
group by d.name
这是sqlserver 实现的,不知道符不符合。不过刚刚验证了一下,不是很对,估计是主键的原因,修改好了再看看
以上语句只能测试出部分,这个存储过程可以实现全部,sqlserver直接执行即可:
create table #temp(Recordcount int ,tableName varchar(30))
declare @tablename varchar(30)
declare @sql varchar(100)
declare @str varchar(30)
declare tablecursor cursor for
select name from sysobjects where xtype='u'
open tablecursor
fetch next from tablecursor into @tablename
while @@fetch_status=0
begin
set @str=@tablename
set @sql='insert into #temp(recordcount,tablename) select count(*),'+''''+@tablename+''''+' from '+@tablename
exec(@sql)
fetch next from tablecursor into @tablename
end
close tablecursor
deallocate tablecursor
select * from #temp drop table #temp