У меня есть следующая таблица:SQL запрос, чтобы вернуть разницу между записями двух последних дат
**TABLE1**
RecordID UserID UserName Balance TranDate
---------------------------------------------------------------
100 10001 John Doe 10213.00 2013-02-12 00:00:00.000
101 10001 John Doe 1932.00 2013-04-30 00:00:00.000
102 10001 John Doe 10213.00 2013-03-25 00:00:00.000
103 10001 John Doe 14514.00 2013-04-12 00:00:00.000
104 10001 John Doe 5430.00 2013-02-19 00:00:00.000
105 10001 John Doe 21242.00 2010-02-11 00:00:00.000
106 10001 John Doe 13342.00 2013-05-22 00:00:00.000
Теперь то, что я пытаюсь сделать, это запросить две последние операции и прийти к этим данным :
RecordID UserID UserName Balance TranDate
---------------------------------------------------------------
106 10001 John Doe 13342.00 2013-05-22 00:00:00.000
101 10001 John Doe 1932.00 2013-04-30 00:00:00.000
Затем, используя данные выше, я хотел бы сравнить балансы, чтобы показать разницу:
UserID UserName Difference
---------------------------------------------------------------
10001 John Doe -11410.00
Это просто показывает разницу между двумя предыдущими балансами (последние и весы до последнего)
Теперь у меня следующий запрос ниже. Это хорошо работает, чтобы показать две последние транзакции.
SELECT
TOP 2 *
FROM Table1
WHERE UserID = '1001'
ORDER
BY TranDate DESC
Теперь мои вопросы:
ли SQL выше безопасно использовать? Я просто полагаюсь на сортировку TranDate по ключевому слову ORDER BY DESC, и я не уверен, что это очень надежно или нет.
Как выбрать разницу между двумя балансами (строка 2 - строка 1)? Я искал некоторые ответы в Интернете, и я нахожу материал о том, как присоединяться. Я попробовал, но это не показывает мне мой желаемый результат.
EDIT:
Это ближайший я могу добраться до нужного мне результата. Может кто-нибудь помочь мне в этом, пожалуйста? Благодаря!
DECLARE @SampleTable TABLE
(
UserID INT,
UserName VARCHAR(20),
Balance DECIMAL(9,2) DEFAULT 0
)
INSERT
INTO @SampleTable
(UserID, UserName, Balance)
SELECT
TOP 2 UserID,
UserName,
Balance
FROM Table1
WHERE UserID = '1001'
ORDER
BY TranDate DESC
SELECT A.UserID,
A.UserName,
B.Balance - A.Balance AS Difference
FROM @SampleTable A
JOIN @SampleTable B
ON A.UserID = B.UserID
Большое спасибо!
Спасибо! Это именно то, что мне нужно! Я просто сделал несколько хитростей, чтобы сузить результаты, и все работает отлично! – Smiley