2013-02-18 166 views
0

我有一张桌子,在这里我想更新今天的收盘余额应该显示为tomarrows开盘余额,如果任何更新的closingbalance发生在特定的日期然后从该日期到当前日期期初余额应该得到更新,这里是我想要的样本输出如下; openingbalance(今天)=年末数(昨天)类似于跑台概念

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 

怎么会这样来达到的PLZ帮我

+0

不清楚。澄清你的问题。 – 2013-02-18 11:47:38

回答

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) 

这列出的两个连续的记录中没有第二按日期和余额对应。