SqlServer 根据字段分类汇总信息
发布时间:2020-12-12 13:00:05 所属栏目:MsSql教程 来源:网络整理
导读:在一张基础表中,我们经常要根据一个字段的不同表达方式来汇总数据。下面我们将进行简单的汇总操作。 在数据库中创建一个名为test的表 字段类型如下图 插入数据如下图 这就是基础表了 根据基础表搜索汇总信息 根据字段的值汇总信息 下面是三种类型的汇总语句
在一张基础表中,我们经常要根据一个字段的不同表达方式来汇总数据。下面我们将进行简单的汇总操作。
在数据库中创建一个名为test的表字段类型如下图插入数据如下图 这就是基础表了 根据基础表搜索汇总信息根据字段的值汇总信息下面是三种类型的汇总语句--数值类型 select cast(byint as nvarchar) as '数字',SUM(value) as '值' from test group by byint union all select '合计',SUM(value) from test --字符串类型 select bychar as '字符串',SUM(value) as '值' from test group by bychar union all select '合计',SUM(value) from test --时间类型 select cast(bytime as nvarchar) as '时间',SUM(value) as '值' from test group by bytime union all select '合计',SUM(value) from test结果如下图 因为每个汇总下面都加了一行合计,所以分类汇总字段需要转化为字符串类型,这样才不出错。 根据字段的函数汇总信息根据时间的不同函数一二汇总信息语句如下--时间类型日期 select CONVERT(nvarchar(10),bytime,120) as '时间',SUM(value) as '值' from test group by CONVERT(nvarchar(10),120) union all select '合计',SUM(value) from test --时间类型日期二 select CONVERT(nvarchar(10),(select SUM(value) from test t where CONVERT(nvarchar(10),t.bytime,120)=CONVERT(nvarchar(10),test.bytime,120)) as '值' from test group by CONVERT(nvarchar(10),SUM(value) from test --时间类型小时 select cast(DATEPART(HH,bytime) as nvarchar) as '时间',SUM(value) as '值' from test group by DATEPART(HH,bytime) union all select '合计',SUM(value) from test结果如下图 第一段和第二段是根据时间的获取日期的函数来汇总信息的,大家看到结果是相同的。 第二段 第二段在没有group by的情况下,每个汇总行都给了一张表的信息,相当于聚合函数,只不过显示多条数据罢了。 根据字段的自定义函数汇总信息根据数值类型不同的统计信息汇总信息的语句如下--自定义函数 if exists(select 1 from sysobjects where id=OBJECT_ID('getresult') and OBJECTPROPERTY(id,'IsInlineFunction')=0) drop function getresult go create function getresult(@scode nvarchar(50)) returns nvarchar(50) begin declare @result nvarchar(50) if @scode%2=1 set @result= '单数' else if @scode%2=0 set @result= '双数' else set @result= '其他' return @result end go select dbo.getresult(byint) as '单双数',SUM(value) as '值' from test group by dbo.getresult(byint) union all select '合计',SUM(value) from test简单解释一下语句: 1.在名为getresult的自定义函数存在的情况下删除此函数 2.创建名为getresult的自定义函数,要求根据字段判断是否为单双数 结果如下 总结基础表是死的,我们得到的信息及展现形式是活的。 就像本文的格式一样,文章的主体结构可以是以小一号的标题来展现,但主题的标题一定要突出。(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |