SQL查询本年每月的数据

--一、以一行数据的形式,显示本年的12月的数据,本示例以2017年为例,根据统计日期字段判断,计算总和,查询语句如下:selectsum(case when  datepart(month,统计日期)=1 then 支付金额 else 0 end) as '1月',
sum(case when  datepart(month,统计日期)=2 then 支付金额 else 0 end) as '2月',
sum(case when  datepart(month,统计日期)=3 then 支付金额 else 0 end) as '3月',
sum(case when  datepart(month,统计日期)=4 then 支付金额 else 0 end) as '4月',
sum(case when  datepart(month,统计日期)=5 then 支付金额 else 0 end) as '5月',
sum(case when  datepart(month,统计日期)=6 then 支付金额 else 0 end) as '6月',
sum(case when  datepart(month,统计日期)=7 then 支付金额 else 0 end) as '7月',
sum(case when  datepart(month,统计日期)=8 then 支付金额 else 0 end) as '8月',
sum(case when  datepart(month,统计日期)=9 then 支付金额 else 0 end) as '9月',
sum(case when  datepart(month,统计日期)=10 then 支付金额 else 0 end) as '10月',
sum(case when  datepart(month,统计日期)=11 then 支付金额 else 0 end) as '11月',
sum(case when  datepart(month,统计日期)=12 then 支付金额 else 0 end) as '12月'
from TM店铺整体月指标
where datepart(year,统计日期)='2023'

--二、根据当前日期,以列的数据形式,显示本年的12个月的数据,查询语句如下:
select  统计日期=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  统计日期=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.统计日期),统计日期=t1.统计日期+'月',     支付金额=sum(isnull(t2.支付金额,0)) from t t1 left join(select substring(convert(varchar,统计日期,120),6,2) as 统计日期,sum(支付金额) as 支付金额--count(*) as countsfrom TM店铺整体月指标  where datepart(year,统计日期)='2023' group by substring(convert(varchar,统计日期,120),6,2)  ) t2 on t1.统计日期= t2.统计日期group by t1.统计日期 

--sql 查询每一年1到12月的数据
Select Year(统计日期) as 年份,Month(统计日期)  as 月份,SUM(支付金额) as 支付金额
FROM TM店铺整体月指标Group by Year(统计日期),Month(统计日期)

--2、每月
select year(统计日期) 年,month(统计日期) 月,
sum(支付金额) as 支付金额, sum(老买家支付金额) as 老买家支付金额,sum(支付件数) as 支付件数,
sum(直通车消耗) as 直通车消耗,sum(淘宝客佣金) as 淘宝客佣金,sum(钻石展位消耗) as 钻石展位消耗,sum(成功退款金额) as 成功退款金额,
sum(PC端支付金额) as PC端支付金额,sum(无线端支付金额) as  无线端支付金额,
sum(PC端支付件数) as PC端支付件数,sum(无线端支付件数) as 无线端支付件数from TM店铺整体日指标WHEREYEAR (统计日期) = 2023   -- 这里假设你要查 2023年的每月的统计。group by year(统计日期),month(统计日期)

--按年统计 
SELECT year(统计日期) 年次, 
sum(支付金额) as 支付金额, sum(老买家支付金额) as 老买家支付金额,sum(支付件数) as 支付件数,
sum(直通车消耗) as 直通车消耗,sum(淘宝客佣金) as 淘宝客佣金,sum(钻石展位消耗) as 钻石展位消耗,sum(成功退款金额) as 成功退款金额,
sum(PC端支付金额) as PC端支付金额,sum(无线端支付金额) as  无线端支付金额,
sum(PC端支付件数) as PC端支付件数,sum(无线端支付件数) as 无线端支付件数FROM TM店铺整体月指标 
GROUP BY year(统计日期)

--按月逐级累计查询语句:
SELECT a.统计日期, SUM(b.支付金额) as 支付金额  FROM(SELECT 统计日期, SUM(支付金额) 支付金额 FROM TM店铺整体月指标 GROUP BY 统计日期) a
INNER JOIN(SELECT 统计日期, SUM(支付金额) 支付金额 FROM TM店铺整体月指标 GROUP BY 统计日期) b
ON a.统计日期 >= b.统计日期
GROUP BY a.统计日期
ORDER BY a.统计日期

--按周统计 (年度周次)
SELECT datepart(week, 统计日期) 周次, count(1) 销售天数, sum(支付金额) as 支付金额, sum(老买家支付金额) as 老买家支付金额,sum(支付件数) as 支付件数,
sum(直通车消耗) as 直通车消耗,sum(淘宝客佣金) as 淘宝客佣金,sum(钻石展位消耗) as 钻石展位消耗,sum(成功退款金额) as 成功退款金额,
sum(无线端支付金额) as  无线端支付金额,sum(PC端支付金额) as PC端支付金额,
sum(无线端支付件数) as 无线端支付件数, sum(PC端支付件数) as PC端支付件数FROM TM店铺整体日指标 
WHERE year(统计日期)=year(getdate()) 
GROUP BY datepart(week, 统计日期) 

--按周统计 (月份周次)
SELECT weekName 周次,count(1) 销售次数, sum(支付金额) as 支付金额, sum(老买家支付金额) as 老买家支付金额,sum(支付件数) as 支付件数,
sum(直通车消耗) as 直通车消耗,sum(淘宝客佣金) as 淘宝客佣金,sum(钻石展位消耗) as 钻石展位消耗,sum(成功退款金额) as 成功退款金额,
sum(无线端支付金额) as  无线端支付金额,sum(PC端支付金额) as PC端支付金额,
sum(无线端支付件数) as 无线端支付件数, sum(PC端支付件数) as PC端支付件数from (
SELECT cast(datepart(month,统计日期) as varchar(2)) + '月第'+ cast((datepart(week,统计日期) - datepart(week,convert(varchar(7),统计日期,120) + '-01') + 1) as varchar(2)) + '周'  
weekName,支付金额,老买家支付金额,支付件数,直通车消耗,淘宝客佣金,钻石展位消耗,成功退款金额,无线端支付金额,PC端支付金额,无线端支付件数,PC端支付件数
FROM TM店铺整体日指标 
WHERE year(统计日期)=year(getdate()) 
)tb
GROUP BY weekName 

--按季统计 
SELECT datepart(quarter, 统计日期) 季次, count(1) 销售次数,sum(支付金额) as 支付金额, sum(老买家支付金额) as 老买家支付金额,sum(支付件数) as 支付件数,
sum(直通车消耗) as 直通车消耗,sum(淘宝客佣金) as 淘宝客佣金,sum(钻石展位消耗) as 钻石展位消耗,sum(成功退款金额) as 成功退款金额,
sum(无线端支付金额) as  无线端支付金额,sum(PC端支付金额) as PC端支付金额,
sum(无线端支付件数) as 无线端支付件数, sum(PC端支付件数) as PC端支付件数FROM TM店铺整体月指标 
WHERE year(统计日期)=year(getdate()) 
GROUP BY datepart(quarter, 统计日期) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/95939.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OceanBase社区版4.x核心技术解密

数字化时代,各行各业的数据量呈现爆发式增长,对于海量数据价值的挖掘和应用,正成为推动创新的主要力量,与此同时,数据计算复杂度正在提升。在此背景下,对于数据处理的基石数据库而言,正面临市场…

华为云 sfs 服务浅谈

以root用户登录弹性云服务器。 以root用户登录弹性云服务器。 安装NFS客户端。 查看系统是否安装NFS软件包。 CentOS、Red Hat、Oracle Enterprise Linux、SUSE、Euler OS、Fedora或OpenSUSE系统下,执行如下命令: rpm -qa|grep nfs Debian或Ubuntu系统下…

深度学习推荐系统(二)Deep Crossing及其在Criteo数据集上的应用

深度学习推荐系统(二)Deep Crossing及其在Criteo数据集上的应用 在2016年, 随着微软的Deep Crossing, 谷歌的Wide&Deep以及FNN、PNN等一大批优秀的深度学习模型被提出, 推荐系统全面进入了深度学习时代, 时至今日&#xff0c…

UDP协议的重要知识点

UDP,即用户数据报协议(User Datagram Protocol),是一个简单的无连接的传输层协议。与TCP相比,UDP提供了更少的错误检查机制,并允许数据包在网络上更快地传输。在这篇博客中,我们将深入探讨UDP的…

C++基础语法——多态

目录 1.什么是多态? 2.多态的定义与实现 ①多态的构成条件 ②虚函数 ③虚函数的重写 1.协变 2.析构函数的重写 ④final和override 1.final 2.override ⑤重载、重写(覆盖)与重定义(隐藏)的区别 3.什么是抽…

【Linux】Libevent相关小知识总结

Libevent是基于事件的,也就是说,相当于去注册一个事件,当这个事件发生的话,那么就会调用回调函数。

(第六天)初识Spring框架-SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录

SSM框架的学习与应用(Spring Spring MVC MyBatis)-Java EE企业级应用开发学习记录(第六天)初识Spring框架 ​ 昨天我们已经把Mybatis框架的基本知识全部学完,内容有Mybatis是一个半自动化的持久层ORM框架,深入学习编写动态SQL&a…

Flutter 安装教程 + 运行教程

1.下载依赖 https://flutter.cn/docs/get-started/install/windows 解压完后根据自己的位置放置,如(D:\flutter) 注意 请勿将 Flutter 有特殊字符或空格的路径下。 请勿将 Flutter 安装在需要高权限的文件夹内,例如 C:\Program …

【Redis】Redis 的学习教程(七)之 SpringBoot 集成 Redis

在前几篇文章中,我们详细介绍了 Redis 的一些功能特性以及主流的 java 客户端 api 使用方法。 在当前流行的微服务以及分布式集群环境下,Redis 的使用场景可以说非常的广泛,能解决集群环境下系统中遇到的不少技术问题,在此列举几…

【rust/egui】(八)使用panels给你的应用划分功能区块

说在前面 rust新手,egui没啥找到啥教程,这里自己记录下学习过程环境:windows11 22H2rust版本:rustc 1.71.1egui版本:0.22.0eframe版本:0.22.0上一篇:这里 panel是啥 panel是ui上的一块区域&…

【数据库】事务(概念和特点)

数据库——事务 一、 **什么是事务**:二、事务的特点:三、一个例子说明事物四、事务的隔离性4.1 五种并发异常4.1.1 第一类丢失更新4.1.2 第二类丢失更新4.1.3 脏读4.1.4 不可重复读4.1.5 幻读 4.2 使用四种隔离级别去处理这五种并发异常4.3 事务管理的实…

科技成果鉴定之鉴定测试报告

鉴定测试 由于软件类科技成果的复杂、内部结构难以鉴别等特点,我们提供了软件类科技成果鉴定测试服务。软件类科技成果鉴定测试是依据其科研项目计划任务书或技术合同书,参照相应的国家标准对要申请鉴定的软件类科技成果进行的一种符合性测试&#xff0…