我需要显示 6 个月的产品消耗情况。
我的表消耗
如下:
int ID_Conso
int ID_Product
int Quantity_Conso
int Month_Conso
int Year_COnso
如下图所示,有 1 条记录/1 个产品/1 个月
我想为我的 View 编写的查询必须将结果显示为:
这是我的查询:
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,但没有成功。
最佳答案
使用聚合函数SUM与 IF ,以及 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/