按一个字段分组,保留其他字段

时间:2018-12-10 17:39:15

标签: sql ms-access group-by aggregate

具有三个字段的基础表bod

| BOFORM_ID | FEINBOD | MAECHTBOD | 
+-----------+---------+-----------+
|   3301211 | fSms    |        50 |
|   3301211 | mSfs    |       150 |
|   3301231 | fSms    |       200 |
|   3301312 | Ss      |       150 |
|   3301312 | Su2     |        50 |

我想

  1. BOFORM_ID分组

  2. MAECHTBOD

  3. 获取最大值
  4. ,同时使关联的FEINBODMAECHTBOD的最大值位于同一行。

我不知道如何执行步骤3。

我想要的输出:

| BOFORM_ID | FEINBOD | MAECHTBOD | 
+-----------+---------+-----------+
|   3301211 | mSfs    |       150 |
|   3301231 | fSms    |       200 |
|   3301312 | Ss      |       150 |

2 个答案:

答案 0 :(得分:1)

您可以使用 correlated 子查询:

SELECT b.*
FROM bod as b
WHERE MAECHTBOD = (SELECT MAX(b1.MAECHTBOD) FROM bod as b1 WHERE b1.BOFORM_ID = b.BOFORM_ID);

答案 1 :(得分:0)

考虑将您的单位级别数据加入汇总查询。这种方法比相关子查询更有效,后者为外部查询的行计算汇总,而不是如下所示。

META6.json