我有一个数据就像
的表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
即。以下规则适用:
我不确定我会如何在SQL(对于Access / VBA)中这样做,并且一直试图弄清楚这一点无济于事。
感谢您的提前帮助
Claudy
答案 0 :(得分:3)
将产生您要查找的结果的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
答案 1 :(得分:2)
您可以这样做:
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()
生成错误的值。