使用两个不为空的字段显示和分组具有相同ID的所有记录

时间:2018-11-13 14:12:26

标签: mysql select

我有一张表,显示所有产品,price_fact字段,计算发票时的平均值,并在插入时更新price_fact字段,price_alb字段相同,但带有交货单。

因此,当发票(price_fact)没有交货单(price_alb),而发票(price_fact)没有交货单时。

+---------------+------------+-------+-------------+-----------+
| name          | id_product | price |   price_fact|  price_alb|
+---------------+------------+-------+-------------+-----------+
| phone         |         1  |   300 |        NULL |        275| 
| mouse         |         2  |   100 |        100  |       NULL|        
| phone         |         1  |   250 |        NULL |        275|
| mouse         |         2  |   100 |        NULL |        100| 
| phone         |         1  |   300 |        300  |       NULL|
+---------------+------------+------+--------------+-----------+

我想要的是在一行中计算所有产品,总共计算产品数量,最终结果显示那些具有非空记录的产品的price_fact和price_alb列。 / p>

+---------------+------------+-------+-------------+-----------+------+
| name          | id_product | price |   price_fact|  price_alb| units|
+---------------+------------+-------+-------------+-----------+------+
| phone         |         1  |   300 |         300 |        275|     3|
| mouse         |         2  |   100 |         100 |        100|     2|   
+---------------+------------+------+--------------+-----------+------+

已解决(我已将MAX(price_fact),MAX(price_alb)放入选择范围)。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用聚合函数。

SELECT name,
       id_product,
       MAX(price) price,
       MAX(price_fact) price_fact,
       MAX(price_alb) price_alb,
       COUNT(*) units
FROM T
GROUP BY name,id_product