获取不同ID的最后一行然后显示大于零的数据

时间:2017-05-09 05:37:18

标签: sql ms-access

这是我的表...

+----+--------+
| id | amount |
+----+--------+
| 1  | 100    |
| 1  | 50     |
| 1  | 0      |
| 2  | 500    |
| 2  | 100    |
| 3  | 300    |
| 3  | -2     |
| 4  | 400    |
| 4  | 200    |
+----+--------+

我想从中选择 not id的每个值都具有与之关联的非正(即负或0)值,以及最小{与amount相关联的{1}}。

如果我使用此代码......

id

......然后这些结果显示......

SELECT DISTINCT id, amount 
FROM table t 
WHERE amount = (SELECT MIN(amount) FROM table WHERE id= t.id)

但是我想要的声明是......

+----+--------+
| id | amount |
+----+--------+
| 1  | 0      |
| 2  | 100    |
| 3  | -2     |
| 4  | 200    |
+----+--------+

3 个答案:

答案 0 :(得分:0)

如果您想显示ID,@Bean public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() { return new Jackson2ObjectMapperBuilderCustomizer() { @Override public void customize(Jackson2ObjectMapperBuilder builder) { builder.dateFormat(new ISO8601DateFormat()); } }; } > min(amount),使用它。

0

答案 1 :(得分:0)

只需在查询中添加amount>0即可。你错过了查询中的那个条件。应该这样做。

SELECT DISTINCT id, amount FROM table t 
WHERE amount = (SELECT MIN(amount) FROM table WHERE id= t.id)
and amount>0;

答案 2 :(得分:0)

请尝试以下方法......

SELECT id,
       MIN( amount )
FROM table
WHERE amount > 0
GROUP BY id
ORDER BY id;

此声明首先选择WHERE amount大于0的所有记录。

然后,根据id的每个幸存值对结果数据集中的记录进行分组,并为amount / GROUP选择id的最小值。

然后,生成的值对按ORDER id排序并返回给用户。

如果您有任何问题或意见,请随时发表评论。