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

nle07wnf  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(379)

我有一个显示所有产品的表,price\u fact字段,在开票时计算平均值,在插入时更新price\u fact字段,price\u alb字段是相同的,但有一个交货通知单。
所以当发票(price\u fact)没有交货通知单(price\u alb)时,交货通知单也没有发票。

+---------------+------------+-------+-------------+-----------+
| 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\u fact和price\u alb列,对于那些有不为空记录的人。

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

已解决(我已将max(price\u fact)、max(price\u alb)放入select)。

pbpqsu0x

pbpqsu0x1#

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

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

相关问题