SQL把日期按月分类,汇总相关数据

SQL把日期按月分类,汇总相关数据,第1张

不知道你是什么数据库,只能写个意思,具体的内容要你自己搞定。
其实就是把日期字段截取一下,如果日期本身没办法截取,那就转换一下。比如如果是oracle那么可以用to_char转换为字符型,然后再截取。如果担心1月和10月截取重复,那就多截取一位,或者查找第二个/字符的位置截取。
截取完成后,在用截取后的日期和客户分组,金额汇总求和就可以了。
我比较熟悉oracle,我用oracle的写法尝试这写一个,如果不是oracle,那么你就要自己找找类似的了。(日期也可以直接截取,不过好长时间没写忘记怎么写了,就写一个转换的吧)
select
substr(to_char(日期),1,instr(to_char(日期),'/',1,2)-1)
月份,客户,sum(金额汇总)
from
table
group
by
substr(to_char(日期),1,instr(to_char(日期),'/',1,2)-1)
,客户

“失效时间”是:“时间类型”的
那应该是2008-04-01这样的格式吧?
试试这个:
select from [表名] order by month(失效时间) asc

问题一:
SELECT 商品名称,SUM(case when month(销售日期)=1 then 销售数量 else 0 end) 1月,
SUM(case when month(销售日期)=2 then 销售数量 else 0 end) 2月,
SUM(case when month(销售日期)=3 then 销售数量 else 0 end) 3月,
SUM(case when month(销售日期)=4 then 销售数量 else 0 end) 4月,
SUM(case when month(销售日期)=5 then 销售数量 else 0 end) 5月,
SUM(case when month(销售日期)=6 then 销售数量 else 0 end) 6月,
SUM(case when month(销售日期)=7 then 销售数量 else 0 end) 7月
  FROM 表一
   group by 商品名称
   
   问题二:
CREATE PROC P1 AS
   SELECT 商品名称,SUM(case when month(销售日期)=1 then 销售数量 else 0 end) 1月,
SUM(case when month(销售日期)=2 then 销售数量 else 0 end) 2月,
SUM(case when month(销售日期)=3 then 销售数量 else 0 end) 3月,
SUM(case when month(销售日期)=4 then 销售数量 else 0 end) 4月,
SUM(case when month(销售日期)=5 then 销售数量 else 0 end) 5月,
SUM(case when month(销售日期)=6 then 销售数量 else 0 end) 6月,
SUM(case when month(销售日期)=7 then 销售数量 else 0 end) 7月
  FROM 表一
   group by 商品名称

能描述清楚点吗?如果工作任务仅仅一个数据列,有多种数据,Oracle参考如下:

 select substr(时间字段,1,4) vyear,substr(时间字段,5,2) vmonth,sum(工作任务类型字段) from 表名 group by substr(时间字段,1,4) vyear,substr(时间字段,5,2),

工作任务是不是一个字段,字段里只有 :文档、工作任务、零部件、变更通知、问题报告、变更任务六种数据类型;如果是的话,Oracle的参考如下:

select substr(时间字段,1,4) vyear,substr(时间字段,5,2) vmonth,工作任务类型字段,sum(你要计算的数值) from 表名 group by substr(时间字段,1,4) vyear,substr(时间字段,5,2),工作任务类型字段

仅供参考,谢谢!

declare @yf int
declare @rqxx varchar (30)
declare @rqsx varchar (30)
set @yf = '' --输入月份
set @rqxx =convert(varchar(30),@yf-1)+'月'+'26日'+'14:30:00'
set @rqxx =convert(varchar(30),@yf)+'月'+'25日'+'14:30:00'
select sum(交易量) from a where 交易时间 between @rqxx and @rqsx
这个只是个思路
上面我把@rqxx,@rqsx 定义为 varchar 你在具体定义时 要和a中交易时间一致,时间格式也要改 而且这个月份只能实现 2月--12月查询 有需要的话自己改下


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

原文地址: https://outofmemory.cn/yw/13255045.html

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

发表评论

登录后才能评论

评论列表(0条)

保存