Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2000 Forums
 SQL Server Development (2000)
 Row Comparison

Author  Topic 

ChetShah
Starting Member

37 Posts

Posted - 2002-01-09 : 06:47:55
The following query shows movements for each liability

select t1.LiabilityID,t1.DateTimePassed,t1.PassedTo
from tblliabilitymovement as t1
Order BY t1.LiabilityID,t1.DateTimePassed DESC

and results are:

LiabilityID DateTimePassed PassedTo
----------- --------------------------- -----------

11431 Nov 21 2001 5:43PM 5
11431 Nov 21 2001 5:41PM 4
11431 Nov 4 2001 1:11PM 7

I'm trying to generate a query whereby
- each liabilityID is compared with next row to check if it's the same
- if they are the same then generate these results from PassedTo field is transposed :

LiabilityID FromTeam ToTeam
----------- ------------- -----------

11431 4 5
11431 7 4
11431 0 7

Is this possible to achieve without using cursors

Chet

ToddV
Posting Yak Master

218 Posts

Posted - 2002-01-09 : 09:16:47
Hi, this will do it.

First I create a ranking for each liability by the Date it was passed. I would create this as a view for simplicity's sake. then Join that on Rank = Rank+1.

SELECT X.LiabilityID, X.DatetimePassed, ISNULL(Y.PassedTo,0) AS "PassedFrom",X.PassedTo
FROM ( SELECT A.LiabilityID, A.DatetimePassed, A.PassedTo, Count(*) as "Rank"
FROM #tblliabilitymovement A
JOIN #tblliabilitymovement B
ON A.LiabilityID = B.LiabilityID AND
A.DatetimePassed > = b.DatetimePassed
GROUP BY A.LiabilityID, A.DatetimePassed, A.PassedTo ) AS X

Left OUTer JOIN (SELECT A.LiabilityID, A.DatetimePassed, A.PassedTo, Count(*) as "Rank"
FROM #tblliabilitymovement A
JOIN #tblliabilitymovement B
ON A.LiabilityID = B.LiabilityID AND
A.DatetimePassed > = b.DatetimePassed
GROUP BY A.LiabilityID, A.DatetimePassed, A.PassedTo ) AS Y
ON X.LiabilityID = Y.LiabilityID AND
X.Rank = Y.Rank+1

Go to Top of Page
   

- Advertisement -