这可能很简单但我似乎缺乏通过搜索引擎来表达这个问题的正确方法。
对于给定的TicketId,有基于LocId和BinId的唯一标识符。对于任何给定的LocId + BinId组合,也可以有任意数量的TransIds。
我需要的是只返回TransId最高的记录。
TicketId | LocId | BinId | TransId
-------- | ----- | ----- | -------
316 | 111 | 100 | 1000
316 | 112 | 101 | 1001
316 | 113 | 105 | 1000
316 | 104 | 210 | 1001
316 | 104 | 210 | 1000
316 | 17 | 35 | 1000
316 | 17 | 35 | 1001
316 | 27 | 99 | 1001
所以我的预期结果将是:
TicketId | LocId | BinId | TransId
-------- | ----- | ----- | -------
316 | 111 | 100 | 1000
316 | 112 | 101 | 1001
316 | 113 | 105 | 1000
316 | 104 | 210 | 1001
316 | 17 | 35 | 1001
316 | 27 | 99 | 1001
非常感谢任何帮助。
答案 0 :(得分:1)
您可以使用ROW_NUMBER()
和PARTITION
上LocId
的窗口BinId
功能执行此操作,TransId
DESC
排序,并只取得第一个结果:
;With Cte As
(
Select *,
Row_Number() Over (Partition By LocId, BinId Order By TransId Desc) As RN
From YourTable
)
Select TicketId, LocId, BinId, TransId
From Cte
Where RN = 1
答案 1 :(得分:1)