MySQL 帮助进行查询

标签 mysql sql

我需要显示 6 个月的产品消耗情况。

我的表消耗如下:

int ID_Conso
int ID_Product
int Quantity_Conso
int Month_Conso
int Year_COnso

如下图所示,有 1 条记录/1 个产品/1 个月

enter image description here

我想为我的 View 编写的查询必须将结果显示为:

enter image description here

这是我的查询:

      SELECT c.id_Product,
         t1.conso1, 
         t2.conso2, 
         t3.conso3, 
         t4.conso4, 
         t5.conso5, 
         t6.conso6
  FROM Consumption c,
     (SELECT quantity_conso as "conso1" 
            FROM `consumption` 
            WHERE year= Year(Now()) and month = 1) t1,
     (SELECT quantity_conso as "conso2" 
            FROM `consumption` 
            WHERE year= Year(Now()) and month = 2) t2,
     (SELECT quantity_conso as "conso3" 
            FROM `consumption` 
            WHERE year= Year(Now()) and month = 3) t3,
     (SELECT quantity_conso as "conso4" 
            FROM `consumption` 
            WHERE year= Year(Now()) and month = 4) t4,
     (SELECT quantity_conso as "conso5" 
            FROM `consumption` 
            WHERE year= Year(Now()) and month = 5) t5,
     (SELECT quantity_conso as "conso6" 
            FROM `consumption` 
            WHERE year= Year(Now()) and month = 6) t6

此查询显示所有 id_product 的所有记录(如果缺少一条记录,则不会显示 null)

我尝试过使用ifexit,但没有成功。

最佳答案

使用聚合函数SUMIF ,以及 Id_Product 上的 GROUP BY。尝试以下查询:

SELECT 
  Id_Product, 
  SUM(IF(Month_Conso = 1, Quantity_Conso, 0)) AS QtyConso_Month1, 
  SUM(IF(Month_Conso = 2, Quantity_Conso, 0)) AS QtyConso_Month2, 
  SUM(IF(Month_Conso = 3, Quantity_Conso, 0)) AS QtyConso_Month3, 
  SUM(IF(Month_Conso = 4, Quantity_Conso, 0)) AS QtyConso_Month4, 
  SUM(IF(Month_Conso = 5, Quantity_Conso, 0)) AS QtyConso_Month5, 
  SUM(IF(Month_Conso = 6, Quantity_Conso, 0)) AS QtyConso_Month6 
FROM Consumption 
GROUP BY Id_Product 
ORDER BY Id_Product ASC 

关于MySQL 帮助进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52315870/

相关文章:

MySQL报错无法添加外键约束

MYSQL 多个触发器

mysql - 按年调优sql

mysql - MySQL 中的列标题(除了列名)

sql - 在 Postgres jsonb 中查询数组结构的正确索引是什么?

php - 没有获得正确的多个数组值

java - 需要修改 java 时间戳以从数据库中获取最新记录

MYSQL - 查找并显示日期差异标准内的所有重复项

sql - 快速构建源自 SQL 数据库的 Web 图表原型(prototype)的方法

java - 使用 JPA Criteria 查询 API 进行多对多示例