• SQL查询本年每月的数据


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

    1. --二、根据当前日期,以列的数据形式,显示本年的12个月的数据,查询语句如下:
    2. select
    3. 统计日期=convert(varchar(10),dateadd(month, 0,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120)
    4. union all select date=convert(varchar(10),dateadd(month,1,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120)
    5. union all select date=convert(varchar(10),dateadd(month,2,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120)
    6. union all select date=convert(varchar(10),dateadd(month,3,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120)
    7. union all select date=convert(varchar(10),dateadd(month,4,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120)
    8. union all select date=convert(varchar(10),dateadd(month,5,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120)
    9. union all select date=convert(varchar(10),dateadd(month,6,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120)
    10. union all select date=convert(varchar(10),dateadd(month,7,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120)
    11. union all select date=convert(varchar(10),dateadd(month,8,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120)
    12. union all select date=convert(varchar(10),dateadd(month,9,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120)
    13. union all select date=convert(varchar(10),dateadd(month,10,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120)
    14. union all select date=convert(varchar(10),dateadd(month,11,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120)

    1. --二、具体应用示例:以2017为例,查询语句如下:
    2. with t as
    3. (
    4. select 统计日期=substring(convert(varchar(10),dateadd(month, 0,convert(varchar(10),DATEADD(year, DATEDIFF(year,0,getdate()), 0),120)),120),6,2)
    5. 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)
    6. 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)
    7. 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)
    8. 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)
    9. 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)
    10. 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)
    11. 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)
    12. 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)
    13. 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)
    14. 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)
    15. 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)
    16. )
    17. select id=ROW_NUMBER()OVER(ORDER BY t1.统计日期),
    18. 统计日期=t1.统计日期+'月',
    19. 支付金额=sum(isnull(t2.支付金额,0))
    20. from t t1
    21. left join
    22. (
    23. select substring(convert(varchar,统计日期,120),6,2) as 统计日期,sum(支付金额) as 支付金额--count(*) as counts
    24. from TM店铺整体月指标
    25. where datepart(year,统计日期)='2023'
    26. group by substring(convert(varchar,统计日期,120),6,2)
    27. ) t2
    28. on t1.统计日期= t2.统计日期
    29. group by t1.统计日期

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

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

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

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

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

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

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

  • 相关阅读:
    java项目失败直接报Disconnected from server
    【GUI视频教程】GUI综合实战视频教程第3期:GUIX Studio一条龙设计主界面,底栏和窗口切换控制(2022-11-21)
    Java集合
    【智能优化算法】基于觅食生境选择的改进粒子群算法(FHSPSO)附 Matlab代码
    2023届C/C++软件开发工程师校招面试常问知识点复盘Part 3
    类的加载过程(类的生命周期)详解
    当Web3的人们高喊数据工具优化,如何用UGC引领数据服务趋势?
    SpringBoot快速部署(2)—不使用docker的常规方法
    网站攻击技术,一篇打包带走!
    IntelliJ IDEA工具常用插件汇总
  • 原文地址:https://blog.csdn.net/zgscwxd/article/details/132652894