如何跨两个ID查询';Microsoft SQL Server中有什么?
我是Microsoft SQL server新手,正在使用现有数据库。我需要查询一个表以获得客户列表。每个客户都有一个客户ID和一个历史ID。对客户记录(在桌面应用程序中)的某些编辑会导致将新行写入表中,且历史记录ID会增加,例如:如何跨两个ID查询';Microsoft SQL Server中有什么?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我是Microsoft SQL server新手,正在使用现有数据库。我需要查询一个表以获得客户列表。每个客户都有一个客户ID和一个历史ID。对客户记录(在桌面应用程序中)的某些编辑会导致将新行写入表中,且历史记录ID会增加,例如: | CustID | HistoryID | Name | City | | AB1 | 1 | Bob Smith | Bangkok | | CD2 | 1 | Joe Bloggs | Lo
| CustID | HistoryID | Name | City |
| AB1 | 1 | Bob Smith | Bangkok |
| CD2 | 1 | Joe Bloggs | London |
| CD2 | 2 | Joe Bloggs | Paris |
| ZA9 | 1 | Sarah Jones | Berlin |
我需要获取每个客户的“最新”记录(HistoryID最高的客户)-因此在上面的示例中,我需要获取“Bob Smith”的行,第二行是“Joe Bloggs”(不是第一行),第二行是“Sarah Jones”
执行此操作的最佳查询是什么?谢谢使用行号()
:
可能是一个复制品
select t.*
from (select t.*,
row_number() over (partition by custid order by historyid desc) as seqnum
from t
) t
where seqnum = 1;