sql server 按年月日分组
sql server 按年月日分组
----------------------------------------------- --author:yangjinwang --date:2017-03-30 --do:根据活动查询 每个奖品类的发放数量 ----------------------------------------------- create proc GetWinningInfoTypeCountByTimeActivity @CreateTimeStart datetime =null, --开始时间 @CreateTimeEnd datetime =null, --结束时间 @TimeType varchar(20)='m', --查询维度,年月日 @ActivityId int=null --活动ID as beginif(@TimeType='y')beginselect c.id as '活动ID',c.Name as '活动名称',cast(datepart(YEAR,a.CreateTime) as varchar(4)) as '日期',b.Title as '奖品类别',COUNT(a.Id) as '中奖数量'from WinningInfo a left join PrizesInfo b on a.PrizesId=b.Idleft join ActivityInfo c on b.ActivityId=c.Idwhere a.ActivityId=@ActivityIdand (a.CreateTime>=@CreateTimeStart or @CreateTimeStart is null)and (a.CreateTime<=@CreateTimeEnd or @CreateTimeEnd is null)group by c.id,c.Name , cast(datepart(YEAR,a.CreateTime) as varchar(4)) ,b.Titleorder by 日期endelse if(@TimeType='m')beginselect c.id as '活动ID',c.Name as '活动名称',cast(datepart(YEAR,a.CreateTime) as varchar(4))+'-'+RIGHT('00'+CAST(MONTH(a.CreateTime) AS VARCHAR(2)),2) as '日期',b.Title as '奖品类别',COUNT(a.Id) as '中奖数量'from WinningInfo a left join PrizesInfo b on a.PrizesId=b.Idleft join ActivityInfo c on b.ActivityId=c.Idwhere a.ActivityId=@ActivityIdand (a.CreateTime>=@CreateTimeStart or @CreateTimeStart is null)and (a.CreateTime<=@CreateTimeEnd or @CreateTimeEnd is null)group by c.id,c.Name , cast(datepart(YEAR,a.CreateTime) as varchar(4))+'-'+RIGHT('00'+CAST(MONTH(a.CreateTime) AS VARCHAR(2)),2) ,b.Titleorder by 日期 endelsebeginselect c.id as '活动ID',c.Name as '活动名称',cast(datepart(YEAR,a.CreateTime) as varchar(4))+'-'+RIGHT('00'+CAST(MONTH(a.CreateTime) AS VARCHAR(2)),2)+'-'+RIGHT('00'+CAST(day(a.CreateTime) AS VARCHAR(2)),2) as '日期',b.Title as '奖品类别',COUNT(a.Id) as '中奖数量'from WinningInfo a left join PrizesInfo b on a.PrizesId=b.Idleft join ActivityInfo c on b.ActivityId=c.Idwhere a.ActivityId=@ActivityIdand (a.CreateTime>=@CreateTimeStart or @CreateTimeStart is null)and (a.CreateTime<=@CreateTimeEnd or @CreateTimeEnd is null)group by c.id,c.Name , cast(datepart(YEAR,a.CreateTime) as varchar(4))+'-'+RIGHT('00'+CAST(MONTH(a.CreateTime) AS VARCHAR(2)),2)+'-'+RIGHT('00'+CAST(day(a.CreateTime) AS VARCHAR(2)),2) ,b.Titleorder by 日期 end end
年,月,日,季,旬
--还可以这样 --年 select datepart(YEAR,getdate()) select datepart(yyyy,getdate()) select datepart(yy,getdate()) --月 select datepart(MONTH,getdate()) select datepart(mm,getdate()) select datepart(m,getdate()) --日 select datepart(dd,getdate()) --1年中的第多少天 select datepart(dy,getdate()) --季度 select datepart(qq,getdate())select datepart(qq,'2017-07-01') --1年中的第多少周 select datepart(wk,getdate()) --星期 --因为从周日算第一天的,星期4,计算结果是5 select datepart(dw,getdate())-1SELECT CONVERT(VARCHAR(10),GETDATE(),120) --2015-07-13 SELECT CONVERT(VARCHAR(10),GETDATE(),101) --07/13/2015--按日分组: select convert(nvarchar(10),GETDATE(),120) --按年月分组: select cast(datepart(YEAR,GETDATE()) as varchar(4))+'-'+RIGHT('00'+CAST(MONTH(GETDATE()) AS VARCHAR(2)),2) --按年分组 select DATEPART(year,GETDATE())--按旬分组select case (datepart(day,GETDATE())-1)/10 when 0 then '上旬' when 1 then '中旬' else '下旬' end as 旬,sum(1) as 统计 from 表A group by case (datepart(day,dt)-1)/10 when 0 then '上旬' when 1 then '中旬' else '下旬' end ------------------------------------------------------------------------------------
另一种Convert 年月日分组方式
--按日 select convert(nvarchar(10),GETDATE(),120) --按月 select convert(nvarchar(7),GETDATE(),120) --按年 select convert(nvarchar(4),GETDATE(),120)
转载于:https://www.cnblogs.com/yangjinwang/p/6648408.html
sql server 按年月日分组相关推荐
- SQL Server 2008 R2——分组取前几名
版权声明:本文为博主原创文章 未经许可不得转载 请通过右侧公告中的"联系邮箱(wlsandwho@foxmail.com)"联系我 未经作者授权勿用于学术性引用. 未经作者授权 ...
- SQL server 数据库单列分组查询
use EMIS go select student_id,max(score) 最高分,min(score) 最低分,count(score) 成绩记录条数 from t_course_reg gr ...
- sql月度分组_SQL Server按月分组
SQL Server按月分组 我有一个具有此架构的表 ItemID UserID Year IsPaid PaymentDate Amount 1 1 2009 0 2009-11-01 300 2 ...
- SQL Server 数据库原理与应用
1. 数据库概述 名词解释: DB:数据库 DBMS:数据库管理系统 DBS:数据库系统 DBA:数据库管理员 DBAS:数据库应用系统 数据管理的三个阶段:人工管理.文件系统阶段.数据库系统阶段. ...
- SQL Server Group by
Group by语句,是SQL Server的一个分组语句.什么意思呢?分组的意思就是将一个数据集根 据指定的字段来进行区域的划分,然后划分后可以进行数据的处理. 文字说多也不好理解,直接上代码,一看 ...
- 深度对比Oracle与SQL Server
本译文采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议发布,转载请保留此信息 译者:马齿苋 | 链接:http://www.dbabeta.com/2010/oracle ...
- Sql Server 中利用游标对table 的数据进行分组统计式输出…
Sql Server 中利用游标对table 的数据进行分组统计式输出- Table Name: Tb_Color Create table Tb_Color(id int identity(1,1) ...
- Lambda表达式 Linq SQL Server 分组后获取第一条数据或最小(最大)数据
1.Lambda表达式 以下是从网上粘贴下来 经测试失败 提示方法"First"只能用作最终查询操作.请考虑在这个实例中使用方法"FirstOrDefault" ...
- SQL Server 数据分组
目录 Group By 语句 Group By 子句与聚合函数 Having 子句 Group By语句 Group By 从字面意义上理解就是根据"By"指定的规则对数据进行分组 ...
- SQL Server数据分组
SQL Server数据分组 一.SQL Server Group By语句. Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)".它的 ...
最新文章
- 《女性的选择》--[日]今野由梨
- mxGraph改变图形大小重置overlay位置
- 路由器 jffs分区 简介
- linux 安装ios jenkins 打包机器签名证书问题
- 19年8月 字母哥 第六章 生命周期内的拦截过滤与监听 用热点公司网不行
- 红旗linux mysql_恢复 - 红旗Linux案例精选:Amanda集中备份实例详细讲解_数据库技术_Linux公社-Linux系统门户网站...
- C# FTP 上传、下载、获取文件列表
- php怎么写for循环,PHP for循环的写法和示例
- Spring Security Oauth2 (三) 密码码模式
- 在职研究生-学术硕士和专业硕士有什么区别?
- 能上QQ但不能打开网页——解决办法
- WEB打印控件Lodop(V6.x)使用说明及样例
- Excel对多个sheet页进行相同操作
- CoBOT检测出AI开源框架TensorFlow中的缺陷
- java图形化界面编程之Swing
- Hadoop安装及部署
- 16 Python总结之舆情时间序列可视化
- 深度学习常用的数据集,包括各种数据跟图像数据。
- 想要转行产品经理,可是社招都要有产品经理相关经验的,该如何转行呢?
- 计算机网络系统有哪些核心技术,超级计算机的核心技术是什么