【问题标题】:How to get the sum of sales per month?如何获得每月销售额的总和?
【发布时间】:2016-08-26 01:38:40
【问题描述】:

如何从表中的字段中获取每月记录的总数。

我有 2 个表,客户和活动,在活动中有成本(双)字段,作为外键客户 ID,想要显示客户和给定日期的成本总和。

当日期为 2016 年 1 月时,我进行了对成本值求和的查询,在这种情况下,我想显示每个月的一月,一月,二月,三月 ....

select idcliente,
       nombre,
       sum(costo) as costo
from actividad
inner join cliente
    on actividad.cliente_idcliente = cliente.idcliente
where cliente_idcliente = 82
group by fecha=2016-01;

并且此咨询适用于我的所有客户,而不仅仅是一个

示例:我想显示这样的表格http://imgur.com/a/6jYlB

【问题讨论】:

  • 按 MONTH(fecha) 分组或使用 DATEPART
  • 或参见 DATE_FORMAT()

标签: mysql sql sql-server


【解决方案1】:

使用月份函数

select 
        YEAR(fecha) as Anno
        MONTH(fecha) as Mes,
        min(idcliente),
        min(nombre),
        sum(costo) as costo 
from actividad 
        inner join cliente on actividad.cliente_idcliente=cliente.idcliente 
where cliente_idcliente=82 
group by year(fecha), month(fecha)

【讨论】:

  • 谢谢,我想在表格中显示客户的姓名和按月显示的成本值
【解决方案2】:

您似乎想要一个数据透视查询结果,以一年中的 12 个月为列,每条记录对应一个给定的客户。尝试以下查询:

SELECT idcliente,
       SUM(CASE WHEN MONTH(fecha) = 1  THEN costo ELSE 0 END) AS January,
       SUM(CASE WHEN MONTH(fecha) = 2  THEN costo ELSE 0 END) AS February,
       SUM(CASE WHEN MONTH(fecha) = 3  THEN costo ELSE 0 END) AS March,
       SUM(CASE WHEN MONTH(fecha) = 4  THEN costo ELSE 0 END) AS April,
       SUM(CASE WHEN MONTH(fecha) = 5  THEN costo ELSE 0 END) AS May,
       SUM(CASE WHEN MONTH(fecha) = 6  THEN costo ELSE 0 END) AS June,
       SUM(CASE WHEN MONTH(fecha) = 7  THEN costo ELSE 0 END) AS July,
       SUM(CASE WHEN MONTH(fecha) = 8  THEN costo ELSE 0 END) AS August,
       SUM(CASE WHEN MONTH(fecha) = 9  THEN costo ELSE 0 END) AS September,
       SUM(CASE WHEN MONTH(fecha) = 10 THEN costo ELSE 0 END) AS October,
       SUM(CASE WHEN MONTH(fecha) = 11 THEN costo ELSE 0 END) AS November,
       SUM(CASE WHEN MONTH(fecha) = 12 THEN costo ELSE 0 END) AS December
FROM actividad
INNER JOIN cliente
    ON actividad.cliente_idcliente = cliente.idcliente
WHERE cliente_idcliente = 82 AND  -- remove this to see monthly summary for all customers
      YEAR(fecha) = 2016          -- change this to whatever year you want to see
GROUP BY idcliente

【讨论】:

  • 谢谢,我想在表格中显示客户的姓名和每月的成本值
  • 非常感谢!蒂姆·比格莱森!正是想看到的样子!
猜你喜欢
  • 2020-07-13
  • 2013-02-08
  • 2021-05-25
  • 2022-10-04
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
相关资源
最近更新 更多