【问题标题】:convert ms-access last() function to sql server 2008将 ms-access last() 函数转换为 sql server 2008
【发布时间】:2012-09-19 07:33:39
【问题描述】:

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

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

【问题讨论】:

  • 您应该解释 LAST 在您的查询中应该做什么
  • 迁移到 SQL 2012 是一种选择吗? LAST_VALUE
  • 你确定你的这个查询选择了什么吗?我担心 NULL 部分。这个查询在做什么?

标签: sql-server sql-server-2008 tsql ms-access


【解决方案1】:

试试这个

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

【讨论】:

    【解决方案2】:

    它没有直接的等价物,但通常可以通过 ORDER BYROW_NUMBER() 或可能 MAX 的组合来实现 - 如果您提供更多上下文和示例数据,则更容易给出明确的答案

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

        您需要使用带有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
        

        【讨论】:

          猜你喜欢
          • 2015-12-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-28
          • 2020-11-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多