sql-server - SQL Server - 一列中的情况不同,但第二列中的最后一条记录

标签 sql-server

我有一个要求(简单,但找不到简单的解决方案)获取手机号码和唯一的交易ID(最新交易很好,但任何交易ID也可以)

示例数据

Seq.    Mobile No.      Transaction No.
1       1234567890        ABC1234
2       2345678901        ABC2392
3       2345678901        ABC2782

我只想查找手机号码 2345678901 和任何一笔交易,但最新的就可以了。

输出

Seq.    Mobile No.      Transaction No.
1       1234567890        ABC1234
2       2345678901        ABC2782

我知道简单的 DISTINCT 是行不通的,所以不确定获得结果的最佳方法是什么。

我找到了一种通过子查询来完成此操作的方法,但我想在单个查询中完成此操作以获得更好的性能。

请帮忙!!

最佳答案

您可以使用ROW_NUMBER为此:

SELECT Seq, MobileNo, TransactionNo
FROM (
  SELECT Seq, MobileNo, TransactionNo,
         ROW_NUMBER() OVER (PARTITION BY MobileNo ORDER BY Seq DESC) AS rn
  FROM mytable) AS t
WHERE t.rn = 1 

上述查询将为每个 MobileNo 精确选取一条记录:具有最大 Seq 值的记录。

关于sql-server - SQL Server - 一列中的情况不同,但第二列中的最后一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36693104/

相关文章:

sql - 如何检查两个给定日期之间是否存在数据范围?

SQL 与空字符串合并

sql - 我可以将 SQL Server Enterprise 镜像到标准吗?

python - 来自 mssql 数据库的 sqlalchemy 映射表,值为 "prefix-namespaces"

mysql - 基于用户 ID 的 SQL 数据库备份和恢复

c# - SQL插入一行或多行数据?

sql - 表的多个别名

SQL : how to find leaf rows?

sql - 返回没有匹配条目的所有日期

sql - 如何拆分分隔字符串以便可以访问单个项目?