我目前坚持以下任务:
我有一张看起来与此类似的表
| 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中执行此操作或我有哪些其他选项?
非常感谢!
答案 0 :(得分: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