牛骨文教育服务平台(让学习变的简单)
博文笔记

怎样一条SQL语句统计该年每月的数据个数

创建时间:2017-11-21 投稿人: 浏览次数:188

先说明一下数据库:Oracle的数据库   我原本向一位老大哥求救,人家用的MySql   最后我上网扒的,自己慢慢写的   

  这条SQL语句是查询某个区间范围里的月份统计个数   作为记录吧,网上的好多都不好用 ,数据库列的格式是Date类型  至于char类型的我没写,所以也不会,我在底下会把向老大哥请教的也写上

以下语句亲测有效!至于你们要是不好使,请自行了断!


  第一种是写的活的,我用FineReport报表,所以有范围值:

select sum(case when  EXTRACT(MONTH FROM SIGN_STDT)=01 then 1 else 0 end) as A,

sum(case when  EXTRACT(MONTH FROM SIGN_STDT)=02 then 1 else 0 end) as B,

sum(case when  EXTRACT(MONTH FROM SIGN_STDT)=03 then 1 else 0 end) as C,

sum(case when  EXTRACT(MONTH FROM SIGN_STDT)=04 then 1 else 0 end) as D

中间的一样我就不复制了,有加密一条要分两节复制很麻烦。

from TABLE

where  SIGN_STDT

 between to_date("2017/11/01","yyyy/mm/dd hh24:mi:ss")

and to_date("2017/11/30","yyyy/mm/dd hh24:mi:ss");

把红色部分的换成你的列名就OK!



//下面这个是查的所有年份为2017年的比较死一些

select sum(case when  EXTRACT(MONTH FROM SIGN_STDT)=01 then 1 else 0 end) as A,

sum(case when  EXTRACT(MONTH FROM SIGN_STDT)=02 then 1 else 0 end) as B,

sum(case when  EXTRACT(MONTH FROM SIGN_STDT)=03 then 1 else 0 end) as C,

sum(case when  EXTRACT(MONTH FROM SIGN_STDT)=04 then 1 else 0 end) as D

中间的一样我就不复制了,有加密一条要分两节复制很麻烦。

from TABLE

where  EXTRACT(YEAR FROM SIGN_STDT)="2017"


//这个是老大哥写的将年月转成char类型,根据年月来统计,不过因为12个月,假如有几个月没有数据,就会不显示,所以我们公司不让用,也分享给大家

select to_char(exportDate,"yyyy/mm"),sum(1) from TABLE group by to_char(exportDate,"yyyy/mm");
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。