SqlServer 根据字段分类汇总信息

SqlServer 根据字段分类汇总信息,第1张

概述在一张基础表中,我们经常要根据一个字段的不同表达方式来汇总数据。下面我们将进行简单的汇总 *** 作。 在数据库中创建一个名为test的表 字段类型如下图 插入数据如下图 这就是基础表了 根据基础表搜索汇总信息 根据字段的值汇总信息 下面是三种类型的汇总语句 --数值类型select cast(byint as nvarchar) as '数字',SUM(value) as '值'from tes

在一张基础表中,我们经常要根据一个字段的不同表达方式来汇总数据。下面我们将进行简单的汇总 *** 作。
在数据库中创建一个名为test的表 字段类型如下图


插入数据如下图


这就是基础表了

根据基础表搜索汇总信息 根据字段的值汇总信息 下面是三种类型的汇总语句

--数值类型select cast(byint as nvarchar) as '数字',SUM(value) as '值'from test group by byintunion all select '合计',SUM(value) from test--字符串类型select bychar as '字符串',SUM(value) as '值'from test group by bycharunion all select '合计',SUM(value) from test--时间类型select cast(bytime as nvarchar) as '时间',SUM(value) as '值'from test group by bytimeunion 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之前的语句,结果如下
第一段


第二段


第二段在没有group by的情况下,每个汇总行都给了一张表的信息,相当于聚合函数,只不过显示多条数据罢了。
第三段是根据时间的获取小时的函数来汇总信息的。

根据字段的自定义函数汇总信息 根据数值类型不同的统计信息汇总信息的语句如下
--自定义函数if exists(select 1 from sysobjects where ID=OBJECT_ID('getresult') and OBJECTPROPERTY(ID,'IsInlineFunction')=0)drop function getresultgocreate function getresult(@scode nvarchar(50)) returns nvarchar(50)begindeclare @result nvarchar(50)if @scode%2=1 set @result= '单数'else if @scode%2=0 set @result= '双数'else set @result= '其他'return  @resultendgoselect 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的自定义函数,要求根据字段判断是否为单双数
结果如下


总结 基础表是死的,我们得到的信息及展现形式是活的。 就像本文的格式一样,文章的主体结构可以是以小一号的标题来展现,但主题的标题一定要突出。 总结

以上是内存溢出为你收集整理的SqlServer 根据字段分类汇总信息全部内容,希望文章能够帮你解决SqlServer 根据字段分类汇总信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1164621.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存