To continue reading for free, register below or login
To read more you must become a member of SearchOracle.com
');
// -->

The description of your problem didn't actually say so, but
the sequence of transactions is determined by your Date column.
You'd be surprised how many people do not realize that there
is no inherent sequence in relational database tables. Sequence
can only be determined in two ways: using ORDER BY,
and using comparison operators. In both cases, it is the
values within a column that determine sequence.
Thus the sequence of rows in your transaction table is determined
by the values in the Date column, such that the first transaction is
the one with the lowest date, the second transaction is the one with
the second lowest date, and so on. The values of the Date column
must be taken in the context of the same customer.
Here's the query:
select TRXID
, CustID
, Date
, Amount
from Transactions as T
where CustID = 100
and Date =
( select min(Date)
from Transactions
where CustID = T.CustID
and Date >
( select min(Date)
from Transactions
where CustID = T.CustID ) )
In words, the transaction you want is the one where the date is
the lowest date for that customer, that isn't the lowest date for
that customer. The lowest date is the first, and the lowest date
that isn't the first is the second.
Remove CustID = 100 and it will return the second
transaction for each customer.
|