SQL Server:如何设置要返回的最大行数

时间:2015-03-13 22:43:53

标签: sql sql-server

我正在尝试限制返回的行数,虽然在常规代码中很简单,但是找不到使用SQL Server的方法。我有一个表,每个相同的交易ID可以包含多行,我想只删除最多2个删除,只有前2个。所以例如,我有以下内容:

Trade id 10, seq# 5, CR 1k
         10, seq# 6, DR 1k
         10, seq# 7, CR 1K 

我想标记seq#5& 6,因为它们通过DR / CR相互抵消,我想按原样保留seq#7。使用连接我最终链接seq#5& 6和6& 7因为我正在寻找交易ID和行的行金额相同但信用/借记字段不是=。任何最感谢的帮助。

1 个答案:

答案 0 :(得分:1)

使用Row_Number窗口功能执行此操作。

select * from 
(
select *,row_number() over(partition by Trade_id order by seq_no asc) as RN
From Yourtable
)
Where RN<=2

要删除记录,请使用CTE

;with cte as 
(
select *,row_number() over(partition by Trade_id order by seq_no asc) as RN
From Yourtable
)
delete from cte 
Where RN<=2