You can use a correlated subquery to solve this problem.
Consider the following SQL Fiddle (which includes a lot of assumptions about your table and data): Working SQL Fiddle
With this table definition and sample data:
create table TXN
( ID int
, TXN_DATE DATETIME
insert into TXN (ID, TXN_DATE) values (1, '2013-01-01');
insert into TXN (ID, TXN_DATE) values (2, '2013-02-02');
insert into TXN (ID, TXN_DATE) values (3, '2013-03-03');
insert into TXN (ID, TXN_DATE) values (4, '2013-04-04');
insert into TXN (ID, TXN_DATE) values (5, '2013-05-05');
A.ID as TXN_ID
, (select top 1 B.ID from TXN B
where B.ID > A.ID) as SUBSEQUENT_TXN_ID
from TXN A
Returns the following results:
The SQL above assumes your dates are unique. If they aren't then you would have to do something else to distinguish the records. For example, you might have to make your correlation more complex:
where B.ID > A.ID might have to become:
where B.ID >= A.ID and B.ID <> A.ID (or
B.ID > A.ID, if your IDs are sequential or at least increasing).
If dates aren't unique and you don't have a sequential identifier to enforce the proper sequence, you may not get perfect, repeatable results, although this would also be true of a procedural approach because you need to be able to sort your records in your select to be able to sequence them.