首页 > 解决方案 > 如何在 Maximo CMMS SQL where 子句中获取最新日期?

问题描述

大家好,我正在尝试获取查询中的最后一个 wostatus.changedate,并且我有以下 Maximo (CMMS) 代码:

workorder.istask = 0 and (workorder.worktype = 'CM' or workorder.worktype = 'CP' or workorder.worktype = 'PM') and (workorder.woclass = 'WORKORDER' or workorder.woclass = 'ACTIVITY') 
and (workorder.schedfinish >= dateadd(week, datediff(week, 0, getdate())+0, 0)
and workorder.schedfinish <= dateadd(week, datediff(week, 0, getdate())+1, 0)
and workorder.schedstart >= dateadd(week, datediff(week, 0, getdate())+0, 0)
and workorder.schedstart <= dateadd(week, datediff(week, 0, getdate())+1, 0))
and workorder.historyflag = 0 and workorder.siteid = 'CORE' and workorder.status != 'WPLAN' and workorder.wonum in
(select wostatus.wonum from wostatus  where (wostatus.status = 'APPR') and wostatus.changeby in ('x', 'xx', 'xxx', 'xxxx' ) and wostatus.changedate >= dateadd(week, datediff(week, 7, getdate()), 2) and wostatus.changedate < dateadd(week, datediff(week, 0, getdate()), 3))

下面是我需要过滤最新日期的代码部分,尽管我没有成功提供最新日期,但我需要的是这样的:

(select wostatus.wonum from wostatus  where (wostatus.status = 'APPR') and wostatus.changeby in ('x', 'xx', 'xxx', 'xxxx' ) and wostatus.changedate >= dateadd(week, datediff(week, 7, getdate()), 2) and wostatus.changedate = MOST RECENT DATE)

整个查询正在查看特定工作类型中的工作订单并计划在本周内,其中他们的状态最后一次由特定人员更改为 APPR,并且此更改发生在特定时间。我想看到这些人在 wostatus.changeby 中的最后一个 wostatus.status = 'APP' 更改。

目前我的查询只查看特定时间的批准日期,我希望它是最近批准的日期。

我试图在我的查询中加入 Max(wostatus.changedate) 但是我没有成功。

这可能吗?

谢谢你。

标签: sqloraclemaximo

解决方案


我不确定您到底需要什么,但请为您的最后一段尝试这个(加上所有更改日期和日期过滤器)

select wonum from maximo.wostatus  where status = 'APPR' and CHANGEDATE in 
(select max(CHANGEDATE) from maximo.wostatus  where status = 'APPR'
group by wonum)

这将为您提供最近批准的工单的过滤器。如果您更需要某些用户的最新版本 - 试试这个

select wonum from maximo.wostatus  where status = 'APPR' and CHANGEDATE in 
(select max(CHANGEDATE) from maximo.wostatus  where status = 'APPR'
group by changeby)

推荐阅读