Sql server 将ms access last()函数转换为sql server 2008

Sql server 将ms access last()函数转换为sql server 2008,sql-server,sql-server-2008,tsql,ms-access,Sql Server,Sql Server 2008,Tsql,Ms Access,如何将ms access last()函数转换为sql server 2008等效查询?代码是 SELECT DISTINCT Last([Title].[Number) AS Row_ID FROM [Title] HAVING (Last([Title].[Number]) Is Null) 它没有直接的等价物,但通常可以通过组合按顺序和行编号()来实现,或者可能是MAX-如果您提供更多的上下文和样本数据,则更容易给出明确的答案它没有直接的等价物,但通常可以通过组合按顺序和行

如何将ms access last()函数转换为sql server 2008等效查询?代码是

SELECT 
    DISTINCT Last([Title].[Number) AS Row_ID 
FROM [Title] 
HAVING (Last([Title].[Number]) Is Null)

它没有直接的等价物,但通常可以通过组合
按顺序
行编号()来实现,或者可能是
MAX
-如果您提供更多的上下文和样本数据,则更容易给出明确的答案

它没有直接的等价物,但通常可以通过组合
按顺序
行数(),或者可能是
MAX
-如果您提供了更多的上下文和示例数据,那么就更容易给出明确的答案

Select Top 1 Number From
(
  Select Number From Title ORDER BY Number DESC
)
试试这个

Select Top 1 Number From
(
  Select Number From Title ORDER BY Number DESC
)

您需要使用带有
ORDER BY
的子查询,因为没有此子句,sql server无法保证行的顺序。参见示例

declare @tbl table(f1 int, f2 varchar(10), d datetime)

insert into @tbl values (1,'1-first','20120917')
insert into @tbl values (1,'1-middle','20120918')
insert into @tbl values (1,'1-last','20120919')
insert into @tbl values (2,'2-just one','20120917')


select f1, (select TOP 1 f2 from @tbl t2 where t2.f1=t1.f1 order by d DESC) Last_f2
from @tbl t1
group by f1

您需要使用带有ORDER BY的子查询,因为没有此子句,sql server无法保证行的顺序。参见示例

declare @tbl table(f1 int, f2 varchar(10), d datetime)

insert into @tbl values (1,'1-first','20120917')
insert into @tbl values (1,'1-middle','20120918')
insert into @tbl values (1,'1-last','20120919')
insert into @tbl values (2,'2-just one','20120917')


select f1, (select TOP 1 f2 from @tbl t2 where t2.f1=t1.f1 order by d DESC) Last_f2
from @tbl t1
group by f1

尝试使用

尝试使用

您应该解释在查询中最后一个应该做什么是迁移到SQL 2012选项?您确定您的查询选择了什么吗?我担心空的部分。这个查询在做什么?您应该解释在您的查询中最后一个应该做什么是迁移到SQL 2012的一个选项?您确定您的查询选择了什么吗?我担心空的部分。这个查询在做什么?