2013-02-18 4 views
0

У меня есть таблица, в которой я хочу обновить итоговый баланс сегодняшнего дня, должен отображаться как начальный баланс времени, если какое-либо обновление балансировочного баланса происходит до определенной даты, а затем с этой даты до текущей даты начальный баланс должен быть обновлен, вот результат вывода, который я хочу, выглядит следующим образом: openingbalance (сегодня) = closingbalance (вчера)похож на концепцию бегущей таблицы

date  opening_balance closing_balance accountformatid daybooktype 
18-02-2013 12000    15000   1    240 
19-02-2013 15000    14000   1    240 
20-02-2013 14000    13000   1    240 
21-02-2013 13000    10000   1    240 
22-02-2013 10000    5000   1    240 
23-02-2013 50000    1500   1    240 

как это могло дружнее плз помочь мне

+0

Не ясно. Уточните свой вопрос. –

ответ

0

Попробуйте с этим:

DECLARE @t TABLE (date DATETIME,  opening_balance INT, closing_balance INT,accountformatid INT,daybooktype INT) 

INSERT @t 
SELECT CONVERT(DATE, a, 105), b,c,d,e 
FROM (VALUES 
('18-02-2013',12000 ,15000 ,1,240), 
('19-02-2013',15000 ,14000 ,1,240), 
('20-02-2013',14000 ,13000 ,1,240), 
('21-02-2013',13000 ,10000 ,1,240), 
('22-02-2013',10000 ,5000 ,1,240), 
('23-02-2013',50000 ,1500 ,1,240) 
) tbl(a,b,c,d,e) 

SELECT t1.* 
     , t2.* 
FROM @t t1 
LEFT JOIN 
     @t t2 ON t1.date = DATEADD(DAY, 1, t2.date) 
AND  t1.opening_balance = t2.closing_balance 
WHERE t2.closing_balance IS NULL 
-- this prevents first record to be falsely reported 
AND  t1.date <> (SELECT MIN(date) FROM @t) 

Этот список второй из двух последовательных записей, которые не соответствуют по дате и балансу.

Смежные вопросы