Mysql 如何按组选择列中的一个重复值
我有一张桌子: 我正在尝试生成一个如下所示的列(包含计算结果) 我尝试了这个查询,因为它给出了一个错误Mysql 如何按组选择列中的一个重复值,mysql,phpmyadmin,Mysql,Phpmyadmin,我有一张桌子: 我正在尝试生成一个如下所示的列(包含计算结果) 我尝试了这个查询,因为它给出了一个错误 SELECT Name, SUM(Amount) AS TAmnt, ProductPrice-SUM(Amount) AS OutB FROM t1 GROUP BY Name; 我也试过,但结果似乎不是我想要的 SELECT Name,SUM(Amount) AS TAmnt, SUM(ProductPrice)-SUM(Amount) AS OutB FROM t1 GR
SELECT Name, SUM(Amount) AS TAmnt,
ProductPrice-SUM(Amount) AS OutB
FROM t1
GROUP BY Name;
我也试过,但结果似乎不是我想要的
SELECT Name,SUM(Amount) AS TAmnt,
SUM(ProductPrice)-SUM(Amount) AS OutB
FROM t1
GROUP BY Name;
查看我缺少的内容有什么帮助吗?您可以尝试按名称和产品价格汇总:
SELECT
Name,
SUM(Amount) AS TAmnt,
ProductPrice - SUM(Amount) AS OutB
FROM t1
GROUP BY
Name,
ProductPrice;
正如@Barmar所提到的,您当前的表没有规范化。如果一个产品只有一个价格,您应该创建一个单独的价格表,并将此信息存储在该表中。使用ANY\u VALUE()
以防止出现错误。它将从组中的任何行中选择ProductPrice
值
SELECT Name, SUM(Amount) AS TAmnt,
ANY_VALUE(ProductPrice)-SUM(Amount) AS OutB
FROM t1
GROUP BY Name;
ProductPrice
名称的每一行是否始终相同?您应该规范化您的数据,并将其放在一个单独的表中,每个名称一行。我没有发现任何错误。另请参见,您似乎没有主键,这在适当的时候可能会出现问题