Access中SQL分组查询问题:筛选有销量水果并每行显示总销量
解决Access SQL查询的需求:保留有销量水果的所有记录并显示总销量
看起来你差一点就搞定了!问题出在你把Fruit N°也加入了GROUP BY子句——这样操作会把每个Fruit N°单独分组,只会保留那些单个编号组有销量的记录,但你要的是:只要某个水果整体有销量,就保留它所有的Fruit N°条目(包括无销量的编号),同时每行显示该水果的总销量。
修正后的SQL代码
SELECT ms.Fruit, ms.[Fruit N°], ts.TotalSales FROM MySheet ms INNER JOIN ( SELECT Fruit, SUM(Sales) AS TotalSales FROM MySheet GROUP BY Fruit HAVING SUM(Sales) > 0 ) ts ON ms.Fruit = ts.Fruit;
代码解释
- 子查询
ts:先单独计算每个水果的总销量,并用HAVING SUM(Sales) > 0筛选出有销量的水果,这一步确保我们只保留整体有销量的水果类别。 - 主查询关联:通过
Fruit字段将原表MySheet(别名ms)和子查询ts关联,这样就能获取该水果的所有Fruit N°记录——不管单个编号对应的销量是否为0,同时每行都会显示该水果的总销量。
这样就能完美匹配你想要的结果啦:既筛选出了有销量的水果,又保留了这些水果对应的所有Fruit N°记录,并且每一行都显示该水果的总销量。
内容的提问来源于stack exchange,提问作者Pierre44
相关产品推荐
相关产品推荐

