SUM只给出一定的标准SQL的不同值

我有一个数据就像一个表

LayerID Company id Company name Layer Name Price 1 1 x x1 20 2 1 x x2 10 3 2 y y1 50 4 2 y y2 50 5 2 y y3 50 6 3 z z1 15 

我想要的是SQL查询应用后有下表

 Company id Company name Price 1 x 30 2 y 50 3 z 15 

即适用以下规则:

  1. 如果公司的不同层次的价格不同,那么总结一下,例如:对于公司x,它将是20 + 10 = 30
  2. 如果公司的不同层次的价格是相同的,那么拿这个数字的例子:对于公司Y它将是50,对于Z它将是15

我不知道我怎么会这样在SQL(对于Access / VBA),并一直试图找出这个无济于事。

感谢您的帮助提前

Claudy

将产生你正在寻找的结果的SQL查询:

 SELECT m.Company_id, m.Company_name, SUM(m.Price) FROM ( SELECT DISTINCT Company_id, Company_name, Price FROM MyTable ) AS m GROUP BY m.Company_id, m.Company_name 

你可以这样做:

 SELECT m.Company_id, m.Company_name, SUM(distinct m.Price) FROM table m GROUP BY m.Company_id, m.Company_name; 

作为警告:我从来没有使用sum(distinct) 。 它通常表示在生成数据的底层数据结构或子查询中发生错误。

编辑:

为什么这样做不好? 一般来说,你真正想要的是:

 SUM(m.Price) where <some id> is distinct 

但是你不能在没有子查询的情况下用SQL语句。 如果以上是你想要的,那么当两个“id”具有相同的价格时,你有一个问题。 sum()产生错误的值。