我正在尝试以SQL等效形式转换此访问函数。
Last([Delivery Table].[Advice Number]) AS [LastOfAdvice Number]
由于SQL中不存在最后一个函数,所以我这样做了:
(SELECT TOP 1 [Delivery Table].[Advice Number] FROM
(
SELECT [Delivery Table].[Advice Number]
FROM [Delivery Table] ORDER BY [Delivery Table].[Advice Number] DESC
) AS [Advice Number Sorted]
) AS [LastOfAdvice Number]
我从convert ms-access last() function to sql server 2008
获得了上述解决方案但是,我收到此错误消息:
Msg 1033, Level 15, State 1, Line 137
The ORDER BY clause is invalid in views, inline functions, derived tables,
subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is
also specified.
这令人困惑,因为我已经在上面指定了TOP。 有任何想法吗?
答案 0 :(得分:2)
仅使用subquery
子句就足以访问TOP
表的最后一条记录:
[Delivery Table]
但是,当您在子查询中指定SELECT TOP (1) dt.[Advice Number]
FROM [Delivery Table] AS dt
ORDER BY dt.[Advice Number] DESC;
子句时,您应该在order by
中包含top
子句。
答案 1 :(得分:0)
您通常可以将 First 或 Last 替换为另一个汇总功能,例如 Min 或 Max -更多含义:
Max([Delivery Table].[Advice Number]) AS [LastOfAdvice Number]