You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改SQL查询,使“Days Since Last Pick”列仅显示大于15的值?

解决方案

你要筛选的是聚合计算后的列值,这种情况不能用WHERE(它仅用于过滤原始行数据),最简便的方式是用HAVING子句——它专门用来过滤分组后的聚合结果,直接放在GROUP BY后面即可。

另外提一句:你原SQL里SELECT后的DISTINCT是多余的,GROUP BY srcloc已经保证了每个srcloc只返回一行记录,没必要再加DISTINCT。

修改后的完整SQL如下:

select srcloc "location",
    max(pckdte) "Date",
    sysdate - max(pckdte) "Days Since Last Pick",
    count(distinct inventory_view.lodnum) "# of Pallets in Location"
from pckwrk_view
left join inventory_view
    on pckwrk_view.srcloc = inventory_view.stoloc
join locmst
    on locmst.stoloc = inventory_view.stoloc
where srcloc like 'LP%A'
    and locmst.useflg = 1
group by srcloc
having sysdate - max(pckdte) > 15  -- 新增的筛选条件
order by max(pckdte) asc

如果想要代码更简洁,部分数据库(比如MySQL、PostgreSQL)允许在HAVING里直接用SELECT中的列别名,写成having "Days Since Last Pick" > 15也可以,但这种写法兼容性稍差;上面重复计算表达式的写法是所有数据库都支持的通用方案。

内容的提问来源于stack exchange,提问作者Davis Middeke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:53:13