2016-08-15 54 views
0

最新记录我有一个SQL Server表具有以下数据:SQL - 我们会根据最后日期

enter image description here

我需要为每种货币的最新记录,这样的结果应该是:

enter image description here

是否有可能得到这个结果只有一个选择而没有做嵌套选择?

+0

可能重复[检索每个组中的最后一条记录](http://stackoverflow.com/questions/1313120 /检索每个组中的最后一个记录) –

+0

*没有执行嵌套选择*:为什么限制? – sstan

+0

另一个特定于SQL Server使用Row_Number函数的副本:http://stackoverflow.com/questions/4751913/retrieving-last-record-in-each-group-from-database-sql-server-2005-2008 –

回答

0

您可以使用窗口功能

;with cteBase as (
    Select *,RowNr=Row_Number() over(Partition By Currency Order By Date Desc) from YourTable 
) 
Select * from cteBase Where RowNr=1 
+0

Just好奇的投票。也就是说,我给了Pawel's WITH TIES的UpVote。他是更好的解决方案 –

1

您可以使用ORDER BYTIES如下:

SELECT TOP 1 WITH TIES * 
FROM Src 
ORDER BY ROW_NUMBER() OVER (PARTITION BY Currency ORDER BY ID DESC) 
+0

Plus1 WITH TIES !!!我总是忘记那个 –

-1

,因为你的记录在RATE更新日(接缝这种方式进入),这应该工作... (请修改限制,以匹配您的表中的货币数量)

SELECT ID,DISTINCT(货币),日期,表格表格的速率FROM表格顺序货币, - 日期限制0,3