如何报告 MS Access 中每个类别的最小值?

如何报告 MS Access 中每个类别的最小值?

在 MS Access 中,我有一个包含几个不同参数的表,如下所示:

元素 重量(克) 最小尺寸(厘米)
橙子 100 5
苹果 90 4
香蕉 130 2
葡萄 40 1

它们被分组为集合,如下所示:

盒子 内容
1 葡萄
2 橙子、苹果、香蕉

我想生成一份报告,为每个“框”提供或设置每个参数的最小值,如果可能的话,还提供它所对应的元素,如下所示:

盒子 最小重量(克) 具有最小权重的元素 最小尺寸(厘米) 具有最小尺寸的元素
1 40 葡萄 1 葡萄
2 90 苹果 2 香蕉

对我来说,棘手的是,一个类别中值最小的元素通常不会在另一个类别中具有最小值。有没有合理的方法来实现这一点?

答案1

我没有安装 Access,这是 SQLite 中的代码,您可能需要进行一些小的修改。

首先,创建一个查询来汇总所有数据(AllData):

select Box, Element, weight, SmallestDim
from boxes left join products on boxes.Contents = products.Element;

这是您的主要疑问:

select minWeightItem.Box, minWeightItem.minWeight, minWeightItem.Element, MinDimItem.minDim, minDimItem.Element
from 
    (select AllData.Box, minWeight, Alldata.Element 
        from (select Box, min(weight) minWeight from AllData group by Box) minWeight 
        join AllData on minWeight.Box = AllData.Box and minWeight.minWeight = AllData.weight) minWeightItem
    left join (select AllData.Box, minDim, Alldata.Element 
        from (select Box, min(SmallestDim) minDim from AllData group by Box) minDim 
        join AllData on minDim.Box = AllData.Box and minDim.minDim = AllData.SmallestDim) minDimItem on minWeightItem.Box = minDimItem.Box;

相关内容