• 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, 统计日期)

  • 相关阅读:
    [Vue项目实战]尚品汇 -- 初始化项目以及项目的配置与分析
    新手小白怎样开始学做自媒体呢?
    1、error LNK2019: 无法解析的外部符号“struct ********“
    C# + easyui 写的一个web项目
    传输层协议 ——— TCP协议
    游戏工程管理
    Rainbow: Combining Improvements in Deep Reinforcement Learning
    第八章 集成学习
    51单片机+EC11编码器实现可调参菜单+OLED屏幕显示
    gis:读取shp文件
  • 原文地址:https://blog.csdn.net/zgscwxd/article/details/132652894