SQLSERVER中按年月分组
SQLSERVER中按年月分组
一个表有三个字段id,dt,d 分别存放id,时间,数值
id dt d
1 2004-08-11 12:12:00.000 9
2 2005-09-11 12:08:00.000 2
3 2005-08-11 12:12:00.000 6
4 2005-09-11 12:12:00.000 10
5 2005-08-11 12:12:00.000 0
要求按照时间里的月份分组求d字段和

1 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[abc]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
2 drop table [dbo].[abc]
3 GO
4
5 CREATE TABLE [dbo].[abc] (
6 [id] [int] NOT NULL ,
7 [dt] [datetime] NULL ,
8 [d] [int] NULL
9 ) ON [PRIMARY]
10 GO
11
12 insert into abc (id,dt,d) values(1,'2004-08-11 12:12:00',9)
13 insert into abc (id,dt,d) values(2,'2005-09-11 12:8:00',2)
14 insert into abc (id,dt,d) values(3,'2005-08-11 12:12:00',6)
15 insert into abc (id,dt,d) values(4,'2005-09-11 12:12:00',10)
16 insert into abc (id,dt,d) values(5,'2005-08-11 12:12:00',0)
17 insert into abc (id,dt,d) values(6,'2004-11-2 12:12:00',4)
18 insert into abc (id,dt,d) values(7,'2004-11-10 12:12:00',4)
19 insert into abc (id,dt,d) values(8,'2004-11-30 12:12:00',4)
20
21 select * from abc
22 select datepart(month,dt)as 月份,sum(d) as 合计 from abc group by datepart(month,dt)

其实就用了一个DATEPART函数
引申一下:如果统计1,2,3,4,5,6,7,8,9,10,11月上旬,11月中下旬,12月的怎么办?
可以这样:

1 select case datepart(month,dt)
2 when 11 then case sign(datepart(day,dt)-11) when -1 then 11 else 13 end
3 else datepart(month,dt) end as 月份,
4 sum(d) as 统计
5 from abc group by
6 case datepart(month,dt)
7 when 11 then case sign(datepart(day,dt)-11) when -1 then 11 else 13 end
8 else datepart(month,dt) end

再引申,如果统计把年月作为分组统计的依据可以这样:
1 select datename(year,dt)+datename(month,dt)as 年月 ,sum(d) as 统计 from abc group by datename(year,dt)+datename(month,dt)
最后,明白group by 后面不仅可以跟字段名就可以了。
再问再续:
1、按照旬统计
1 select case (datepart(day,dt)-1)/10 when 0 then '上旬' when 1 then '中旬' else '下旬' end as 旬,
2 sum(d) as 统计
3 from abc group by
4 case (datepart(day,dt)-1)/10 when 0 then '上旬' when 1 then '中旬' else '下旬' end
2、按 年+旬 分组统计
1 select datename(year,dt)+datename(month,dt)+case (datepart(day,dt)-1)/10 when 0 then '上旬' when 1 then '中旬' else '下旬' end as 日期, sum(d) as 统计
2 from abc
3 group by datename(year,dt)+datename(month,dt)+case (datepart(day,dt)-1)/10 when 0 then '上旬' when 1 then '中旬' else '下旬' end
SQLSERVER中按年月分组的更多相关文章
- SQLSERVER中的ALL、PERCENT、CUBE关键字、ROLLUP关键字和GROUPING函数
SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数 先来创建一个测试表 USE [tempdb] GO )) GO INSERT INTO [#te ...
- SQLSERVER中的假脱机spool
SQLSERVER中的假脱机spool 我发现网上对于假脱机的解释都非常零散,究竟假脱机是什么? 这几天在家里研究了一下,收集了很多网上的资料 假脱机是中文的翻译,而英文的名字叫做 spool 在徐老 ...
- [转]在SqlServer 中解析JSON数据
在Sqlserver中可以直接处理Xml格式的数据,但因为项目需要所以要保存JSON格式的数据到Sqlserver中在博客:Consuming JSON Strings in SQL Server ...
- SqlServer中Sql语句的逻辑执行顺序
准备数据 Sql脚本如下,两张表,一张客户表Customers只包含customerid和city字段,一张订单表Orders包含orderid和customerid(关联Customers的cust ...
- 在SQL Server 2012中如何使用分组集
作者:Itzik Ben-Gan 翻译:张洪举 此文摘自作者的<Microsoft SQL Server 2012 T-SQL基础>. 分组集就是你据以分组的一个属性集.传统上,SQL中 ...
- SQLServer 中实现类似MySQL中的group_concat函数的功能
SQLServer中没有MySQL中的group_concat函数,可以把分组的数据连接在一起. 后在网上查找,找到了可以实现此功能的方法,特此记录下. SELECT a, stuff((SELECT ...
- SqlServer中怎么删除重复的记录(表中没有id)
SqlServer中怎么删除重复的记录(表中没有id) 其实我在别的网址也查到过删除重复的记录,不知道我是我SqlServer2012版本太低还是啥原因 delete from scwhere (c# ...
- 我是如何在SQLServer中处理每天四亿三千万记录的
首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...
- SQLSERVER中NULL位图的作用
SQLSERVER中NULL位图的作用 首先感谢宋沄剑提供的文章和sqlskill网站:www.sqlskills.com,看下面文章之前请先看一下下面两篇文章 SQL Server误区30日谈-Da ...
随机推荐
- [NOIP 2014复习]第三章:动态规划——NOIP历届真题回想
背包型动态规划 1.Wikioi 1047 邮票面值设计 题目描写叙述 Description 给定一个信封,最多仅仅同意粘贴N张邮票,计算在给定K(N+K≤40)种邮票的情况下(假定全部的邮票数量都 ...
- iOS开发——实战总结OC篇&网易彩票开发知识点总结
网易彩票开发知识点总结 关于网易彩票开发中遇到了不少的坑,弄了好久才弄懂,或者有些犹豫很久没用就不记得了,所以这里就总结了一下,希望以后不会忘记,就算忘记也能快速查看! /************** ...
- cocos2d-x在android下的编译
$(call import-add-path,E:/cocos2d-2.0-x-2.0.3) include $(BUILD_SHARED_LIBRARY) http://www.cnblogs.co ...
- Winform开发--控件
WinForm控件开发总结目录 WinForm控件开发总结目录 WinForm控件开发总结(一)------开篇 WinForm控件开发总结(二)------使用和调试自定义控件 WinForm控件开 ...
- nopCommerce 数据库初试化及数据操作
系统启动时执行任务:IStartupTask,启动时执行的任务主要是数据库的初始化和加载. IStartupTask调用IEfDataProvider进行数据库的初始化. IEfDataProvide ...
- 基于HTML5实现五彩连珠小游戏
今天给大家分享一款基于HTML5实现五彩连珠小游戏.这款游戏的规则:点击彩球移动到期望的位置,每移动一次,画面将随机出现3个新的彩球:当同一颜色的彩球连成5个一行或一列或一斜线时,这5个彩球同时消失, ...
- 1.6.6 De-Duplication(重复数据删除)
1. 重复数据删除 solr通过<Signature>类的类型来支持重复数据删除技术的.一个Signature可以通过以下几种方式实现: 方法 描述 MD5Signature 128 ...
- 1.4.6 其他Schema元素
这里描述了schema.xml中的其他几个重要的元素. 唯一主键-Unique Key uniqueKey元素一篇文档的唯一标记,它几乎总是保证您的应用程序设计,例如,如果你更新索引中的文档,需要用到 ...
- SOA资料
实施: 基于J2EE体系架构搭建符合SOA架构的运营管理平台 成功经验: 携程旅行网在SOA架构方面的探索 SOA在互联网系统中的应用
- 《Cortex-M0权威指南》之体系结构---异常和中断
转载请注明来源:cuixiaolei的技术博客 异常会引起程序控制的变化.在异常发生时,处理器停止当前的任务,转而执行异常处理程序,异常处理完成后,会继续执行刚才的任务.异常分为很多种,中断是其中之一 ...