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.
Author |
Topic |
noamg
Posting Yak Master
215 Posts |
Posted - 2007-08-27 : 07:06:55
|
I have this table:create table History( PersonId int, DogID int, EndTime smalldatetime )insert into History( PersonId, DogID, EndTime ) select 12, 44, '2007-08-01'union select 12, 45, '2007-08-02'union select 12, 46, '2007-08-03'I need to find who is the previous dog ?results: PersonId, DogID, PreviousDog:12, 46, 4512, 45, 44thanksNoamNoam Graizer |
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-08-27 : 07:11:54
|
SELECT h.PersonID, h.DogID, (SELECT MAX(p.DogID) FROM History AS p WHERE p.DogID < h.DogID) AS PreviousDogIDFROM History AS h E 12°55'05.25"N 56°04'39.16" |
 |
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-08-27 : 07:20:43
|
SELECT h.PersonID, h.DogID, (SELECT TOP 1 p.DogID FROM History AS p WHERE p.EndTime < h.EndTime ORDER BY p.EndTime DESC) AS PreviousDogIDFROM History AS h E 12°55'05.25"N 56°04'39.16" |
 |
|
madhivanan
Premature Yak Congratulator
22864 Posts |
Posted - 2007-08-27 : 07:25:45
|
quote: Originally posted by Peso SELECT h.PersonID, h.DogID, (SELECT TOP 1 p.DogID FROM History AS p WHERE p.EndTime < h.EndTime ORDER BY p.EndTime DESC) AS PreviousDogIDFROM History AS h E 12°55'05.25"N 56°04'39.16"
I think top in a subquery would be costlier MadhivananFailing to plan is Planning to fail |
 |
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-08-27 : 09:02:28
|
It depends on what "previous is"...According to ID? Use first answerAccording to DATE? Use second answer. E 12°55'05.25"N 56°04'39.16" |
 |
|
|
|
|
|
|