here is my original post
http://social.msdn.microsoft.com/Forums/sqlserver/en-US/1edac5ae-8c61-4dcf-9a15-b01df5cad617/how-to-remove-next-and-previous-record-if-amount-0?forum=transactsql#982b368a-bc6a-461a-9be2-37b3a7331dd8
if I add an ID column to assign row order, what do I need to modify in the below query to keep that order
CREATE TABLE #Temp(
[id] [int] identity(1,1),
[SHCOMP] [char](2) NOT NULL,
[SHCRTD] [numeric](8, 0) NOT NULL,
[SHCUST] [numeric](7, 0) NOT NULL,
[SHDESC] [char](35) NOT NULL,
[SHTYPE] [char](1) NOT NULL,
[SHAMT] [numeric](9, 2) NOT NULL,
[SHCRTT] [numeric](6, 0) NOT NULL,
[CBLNAM] [char](30) NOT NULL,
)
Query
; With cte As
(Select *,
Row_Number() Over(Partition By SHCOMP, CBLNAM, SHDESC, SHAMT Order By ID) As rn, Abs(SHAMT) As AbsAmt
From #Temp)
Select c1.* into #t1
From cte c1
Left Join cte c2 On c1.SHCOMP= c2.SHCOMP
And c1.CBLNAM = c2.CBLNAM
And c1.SHDESC = c2.SHDESC
And c1.SHAMT = -1 * c2.SHAMT
And c1.rn = c2.rn
Where c2.SHCOMP Is Null
order by ID
Original data
SHCOMP CBLNAM SHDESC SHAMT SHTYPE ID
123 cust1 desc1 45 F 1
123 cust1 desc1 -45 T 2
123 cust1 desc1 45 F 3
123 cust1 desc1 -45 T 4
123 cust1 desc1 45 F 5
123 cust1 desc1 -35 T 6
234 cust3 desc2 -60 F 7
234 cust3 desc2 60 T 8
234 cust3 desc2 30 F 9
234 cust3 desc2 -30 T 10
234 cust3 desc2 30 F 11
Results I want
SHCOMP CBLNAM SHDESC SHAMT SHTYPE ID
123 cust1 desc1 45 F 5
123 cust1 desc1 -35 T 6
234 cust3 desc2 30 F 11
That query is changing my ID, instead of keep 5,6,11 it is assigning other numbers. For example
SHCOMP CBLNAM SHDESC SHAMT SHTYPE ID
123 cust1 desc1 -35 T 4
123 cust1 desc1 45 F 7
234 cust3 desc2 30 F 9