Чтобы найти разницу между двумя датами транзакции для индивидуального идентификатора счета:
Использование LAG()
и DATEDIFF
DECLARE @TestTable TABLE (accountid INT, txnid INT, txndate DATETIME);
INSERT INTO @TestTable (accountid, txnid, txndate) VALUES
(1 , 176, '2015-11-27 00:00:00'),
(1 , 177, '2015-12-27 00:00:00'),
(472, 202, '2015-12-01 00:00:00'),
(472, 203, '2015-12-10 00:00:00');
SELECT accountid, txnid, txndate, ISNULL(DATEDIFF(DAY, NextDateTime, txndate), 0) AS [diffdays_trans]
FROM (
SELECT accountid, txnid, txndate,
LAG (txndate, 1) OVER (PARTITION BY accountid ORDER BY accountid) AS NextDateTime
FROM @TestTable
) AS Q
это будет выглядеть так:
accountid txnid txndate diffdays_trans
-------------------------------------------------------------
1 176 2015-11-27 00:00:00.000 0
1 177 2015-12-27 00:00:00.000 30
472 202 2015-12-01 00:00:00.000 0
472 203 2015-12-10 00:00:00.000 9