是否可以在SQL中将SELECT函数与LAST函数结合使用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以在SQL中将SELECT函数与LAST函数结合使用?相关的知识,希望对你有一定的参考价值。

需要帮助找出如何使用LAST函数将我的数据库查询缩小到具有特定过滤器的最新条目。

我正在使用MS Access来测试查询。

问题:我正在尝试使用简单查询过滤我的数据库,以将我的数据缩小到仅与特定WorkOrderRun匹配的项目。

码:

SELECT *
FROM DataPoints
WHERE (((DataPoints.[WorkOrder])=[WO2]) AND ((DataPoints.[RunNumber])=6))

上面的代码效果很好。接下来,我想只获取最新条目中的数据。我相信我需要合并LAST()功能,但无法弄清楚如何。

想法?我会很感激。谢谢。

.

答案

您可以按日期和时间字段排序结果,只选择前1位,例如:

select top 1 t.*
from datapoints t
where t.workorder = [WO2] and t.runnumber = 6
order by t.rundate desc, t.runtime desc
另一答案

您可以使用带有NOT EXISTS条件的相关子查询来仅过滤最新记录,例如:

SELECT dp.*
FROM DataPoints AS dp
WHERE (
    ((dp.[WorkOrder])=[WO2]) 
    AND ((dp.[RunNumber])=6)
    AND (
        NOT EXISTS(
            SELECT 1 
            FROM DataPoints AS dp1
            WHERE (
                ((dp1.[WorkOrder]) = (dp.[WorkOrder])) 
                AND ((dp1.[RunNumber]) = (dp1.[RunNumber]))
                AND ((dp1.[RunTime]) > (dp.[RunTime]))
            )
        )
    )
)
另一答案

如果您能够通过使用LAST()函数包含唯一键来识别记录,那么这将使这非常简单。

我提供的示例显示了如果您仍希望使用LAST()函数,您将如何执行此操作。为了让我的例子工作,我在你的DataPoints表中创建了一个主键,并将其命名为PrimaryWO_Key

第一步:创建查询以获取插入/创建的最后一条记录的唯一键。在我的例子中,我将此命名为Last_WorkOrderPrimaryKey

第二步:创建结果查询以使用我们刚刚创建的查询。我将此查询命名为“上次工作订单记录”。

Access中保存的任何查询都可以像使用“实际”表一样使用。

enter image description here

enter image description here

以上是关于是否可以在SQL中将SELECT函数与LAST函数结合使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL*Plus 中将参数(值)从函数传递/调用到“选择”stmt?

SQL 分析函数之KEEP (DENSE_RANK FIRST/LAST)

SQL 分析函数之KEEP (DENSE_RANK FIRST/LAST)

如何在 MS SQL 中将 last_value 与 group by 结合使用?

如何在 oracle 中将 select 与 if 条件一起用于不同的表,而不是编写函数或存储过程?

是否可以在 C++ 中将返回值移动语义与受保护的复制构造函数一起使用?