Quantcast
Channel: Transact-SQL forum
Viewing all articles
Browse latest Browse all 23857

what do I have to modify on below query to keep same order?

$
0
0

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






Viewing all articles
Browse latest Browse all 23857

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>