我是靠谱客的博主 感性荔枝,最近开发中收集的这篇文章主要介绍sql server 查询本年的每个月的数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

sql server 查询本年的每个月的数据

一、以一行数据的形式,显示本年的12月的数据,本示例以2017年为例,根据CreateDate字段判断,计算总和,查询语句如下:

select sum(case when  datepart(month,CreateDate)=1 then 1 else 0 end) as '1月',
        sum(case when  datepart(month,CreateDate)=2 then 1 else 0 end) as '2月',
        sum(case when  datepart(month,CreateDate)=3 then 1 else 0 end) as '3月',
        sum(case when  datepart(month,CreateDate)=4 then 1 else 0 end) as '4月',
        sum(case when  datepart(month,CreateDate)=5 then 1 else 0 end) as '5月',
        sum(case when  datepart(month,CreateDate)=6 then 1 else 0 end) as '6月',
        sum(case when  datepart(month,CreateDate)=7 then 1 else 0 end) as '7月',
        sum(case when  datepart(month,CreateDate)=8 then 1 else 0 end) as '8月',
        sum(case when  datepart(month,CreateDate)=9 then 1 else 0 end) as '9月',
        sum(case when  datepart(month,CreateDate)=10 then 1 else 0 end) as '10月',
        sum(case when  datepart(month,CreateDate)=11 then 1 else 0 end) as '11月',
        sum(case when  datepart(month,CreateDate)=12 then 1 else 0 end) as '12月'
    from MO_Members
    where datepart(year,CreateDate)='2017' 

 

查询结果如下:

 

二、根据当前日期,以列的数据形式,显示本年的12个月的数据,查询语句如下:

    select  date=convert(varchar(10),dateadd(month, 0,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120) 
    union all select date=convert(varchar(10),dateadd(month,1,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120) 
    union all select date=convert(varchar(10),dateadd(month,2,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120) 
    union all select date=convert(varchar(10),dateadd(month,3,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120) 
    union all select date=convert(varchar(10),dateadd(month,4,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120) 
    union all select date=convert(varchar(10),dateadd(month,5,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120) 
    union all select date=convert(varchar(10),dateadd(month,6,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120) 
    union all select date=convert(varchar(10),dateadd(month,7,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120) 
    union all select date=convert(varchar(10),dateadd(month,8,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120) 
    union all select date=convert(varchar(10),dateadd(month,9,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120) 
    union all select date=convert(varchar(10),dateadd(month,10,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120) 
    union all select date=convert(varchar(10),dateadd(month,11,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120) 

 

查询结果如下:

 

二、具体应用示例:以2017为例,查询语句如下:

with t as 
( 
    select  date=substring(convert(varchar(10),dateadd(month, 0,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120),6,2) 
    union all select date=substring(convert(varchar(10),dateadd(month,1,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120),6,2) 
    union all select date=substring(convert(varchar(10),dateadd(month,2,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120),6,2) 
    union all select date=substring(convert(varchar(10),dateadd(month,3,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120),6,2) 
    union all select date=substring(convert(varchar(10),dateadd(month,4,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120),6,2) 
    union all select date=substring(convert(varchar(10),dateadd(month,5,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120),6,2) 
    union all select date=substring(convert(varchar(10),dateadd(month,6,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120),6,2) 
    union all select date=substring(convert(varchar(10),dateadd(month,7,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120),6,2) 
    union all select date=substring(convert(varchar(10),dateadd(month,8,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120),6,2) 
    union all select date=substring(convert(varchar(10),dateadd(month,9,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120),6,2)
    union all select date=substring(convert(varchar(10),dateadd(month,10,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120),6,2)
    union all select date=substring(convert(varchar(10),dateadd(month,11,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120),6,2) 
)
 select id=ROW_NUMBER()OVER(ORDER BY t1.date),
        date=t1.date+'',     
        Counts=sum(isnull(t2.counts,0)) 
        from t t1 
        left join
        (
            select substring(convert(varchar,CreateDate,120),6,2) as CreateDate,count(*) as counts
            from MO_Members  
            where datepart(year,CreateDate)='2017' 
            group by substring(convert(varchar,CreateDate,120),6,2)  
        ) t2 
        on t1.date= CreateDate
        group by t1.date 


 

查询结果如下:

 

posted on 2017-02-20 16:00 永不言弃! 阅读( ...) 评论( ...) 编辑 收藏

最后

以上就是感性荔枝为你收集整理的sql server 查询本年的每个月的数据的全部内容,希望文章能够帮你解决sql server 查询本年的每个月的数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部