【问题标题】:Get Last Record of same ColumnID获取相同 ColumnID 的最后一条记录
【发布时间】:2014-03-06 22:06:52
【问题描述】:

我目前正忙于以下任务:

我有一张和这张相似的桌子

| TableID | EntityID | InvoiceAmount |    Date    |
|     1   |   46     | 300 000       | 14-01-2014 |
|     2   |  232     | 2456,63       | 17-01-2014 |
|     3   |   46     | 400 000       | 22-01-2014 |
|     4   |  232     | 333 000       | 31-01-2014 |
|     5   |   12     | 124           | 11-01-2014 |
|     6   |   46     | 300 000       | 31-01-2014 |

我需要的是根据日期列按 EntityID 的最后一张发票金额, 所以在 EntityID 46 的情况下,这将是 31-01-2014,实体的值将是:300 000。

问题:有没有办法在 SQL 中执行此操作,或者我有什么其他选项?

非常感谢提前!

【问题讨论】:

    标签: sql tsql filter


    【解决方案1】:

    在 sql-server >= 2005 上最简单的是使用像 ROW_NUMBER 这样的排名函数:

    WITH CTE AS
    (
        SELECT TableID,EntityID,InvoiceAmount,Date,
            RN = ROW_NUMBER() OVER (PARTITION BY EntityID ORDER BY Date DESC)
        FROM dbo.TableName
    )
    SELECT InvoiceAmount FROM CTE 
    WHERE RN = 1 
    -- AND EntityID = 46
    

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 2012-02-13
      • 2012-01-23
      • 1970-01-01
      相关资源
      最近更新 更多