我有一个要求(简单,但找不到简单的解决方案)获取手机号码和唯一的交易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/