sql - SQL 无法使用 Group By 过滤特定日期
问题描述
这可能很简单,但我无法获得所需的输出。
我正在使用下面这个简单的查询来获取最新exp_date
的item_no
select g.item_no,max(g.exp_date)
from grn_drug_item g
group by g.item_no
第一个查询仅显示以下结果01-AUG-20
IT00002530 01-AUG-20
现在我想过滤“特定”最新的上述结果exp_date
(例如:01-AUG-20
如上所述),所以我将查询修改为:
select g.item_no,max(g.exp_date)
from grn_drug_item g
where g.exp_date = to_date('01-AUG-20','DD-MON-YY')
group by g.item_no
但这给了我多行,如果我使用where g.item_no = 'IT00002530'
它会获取所需的输出。
我怎样才能让过滤器在此处为特定对象工作exp_date
?
解决方案
如果无法访问您的数据,这有点推测,但看起来您正在挑选具有较晚exp_date
. 您的过滤器太早了 - 那些日期较晚且特定日期的项目将包含在过滤器中,并且该子集中的最大日期显然是同一日期。
您可以在分组后应用过滤器having
:
select g.item_no,max(g.exp_date)
from grn_drug_item g
group by g.item_no
having max(g.exp_date) = to_date('01-AUG-20','DD-MON-YY')
'YY' 的使用有点令人担忧;使用两位数年份是个问题,但如果必须,请使用RR
. 不过最好使用 4 位数年份,对于固定日期,使用日期文字更简单:
having max(g.exp_date) = date '2020-08-01'
推荐阅读
- java - 如何从集合中返回多个元素?
- java - 如何从周/年解析为 dd/mm/yyyy
- nginx - nginx - 将域重定向到另一个域,但将子目录重定向到 html 文件
- java - 如何在 Android 的一个 FirestoreRecyclerAdapter 中包含两个模型类曲目和艺术家?
- python - 在 python selenium 中搜索内部元素似乎不起作用
- prolog - 变量 = 术语复合序言
- android - 避免从 JSON 数组响应中删除重复值
- javascript - 刷新时可能html页面状态中的元素没有改变?
- elasticsearch - Elasticsearch 嵌套布尔查询
- unit-testing - 白盒测试 - 基础覆盖率