如何使用 MS Access 中的从句获取 MAX 值
Posted
技术标签:
【中文标题】如何使用 MS Access 中的从句获取 MAX 值【英文标题】:How to get MAX Values using the Having Clause in MS Access 【发布时间】:2012-01-19 18:02:04 【问题描述】:我有一个列(字段),其中包含每个实体的多个值(一对多)。
示例:一条记录可以引用该列中的多个值。
我想要做的是只获取此列中最高(MAX)值等于零的记录。
我做的第一件事是将列中的值转换为整数,这样我就可以得到最大值。
这是我的代码:
如何获得 Max 代码?如果一条记录有多个代码。我只想记录最大或最高代码 00000。
Having 子句出现错误,因为我无法在 Where 子句中使用 Aggregate。
SELECT CUSTOMER.USER_ID, MAX(CInt(CUSTOMER.REC_CODE)) AS ACTIVE_REC_CODE,
CUSTOMER.CUS_TYPE
FROM CUSTOMER
WHERE ((CUSTOMER.REC_CODE) IS NOT NULL )
GROUP BY
CUSTOMER.USER_ID, CUSTOMER.REC_CODE, CUSTOMER.CUS_TYPE
HAVING MAX(CInt([CUSTOMER.REC_CODE])= 00000 )
【问题讨论】:
我很困惑,为什么现有的select Max不适合你? 因为我不确定查询的结果集是否准确。 您说的是 00000、11111、22222、33333,但 00000 是此列表的 MIN。你想要 MAX 还是 MIN? 附加信息:基本上我正在尝试获取代码 = 00000 的记录。问题是,有些记录可以同时包含 00000、11111 等。因此,简单来说,我只想记录该代码 = 00000,仅此而已。 如果是文本,为什么不Select * From Customers Where Rec_Code=0
或"0000"
?
【参考方案1】:
您很接近,但您需要从您的WHERE
中删除CUSTOMER.REC_CODE
,因为您想要该列的最大值。这应该有效:
SELECT CUSTOMER.USER_ID, MAX(CInt(CUSTOMER.REC_CODE)) AS ACTIVE_REC_CODE, CUSTOMER.CUS_TYPE
FROM CUSTOMER
WHERE CUSTOMER.REC_CODE IS NOT NULL
GROUP BY CUSTOMER.USER_ID, CUSTOMER.CUS_TYPE
HAVING MAX(CInt([CUSTOMER.REC_CODE])) = 0
【讨论】:
我试过了,但我不确定它是否有效。为了确定,我想问一下:如果一条记录的REC_CODE如下:00000、11111、22222、33333,而另一个REC_CODE只有00000,上面的查询会给我两条记录,还是只给我第二条记录?跨度> 我认为您对自己想要的东西感到困惑。我编写的查询将返回所有USER_ID
和CUS_TYPE
,它们的最大REC_CODE
为00000。
@UnaverageGuy:此查询将只返回您示例的第二行。基本上,如果您在 REC_CODE
中没有 NULL,也没有评估为负整数的值,那么这个解决方案对您来说应该足够了(我认为)。以上是关于如何使用 MS Access 中的从句获取 MAX 值的主要内容,如果未能解决你的问题,请参考以下文章
如何在python中的字符串之间添加空格。我正在从 ms access 数据库中获取数据
从文本转移到 varchar(MAX):MS Access 有啥问题吗?