0

要件があります。私のデータは次のようになります

Customer   OpenBal  Qty  Date
---------  -------  ---  --------
707001304  597      -48  20100414
707001304  597      -30  20100415
707001304  597      -30  20100419
707001304  597      -54  20100420

計算してデータを取得したい

Customer   OpenBal  Qty  Date      ClosingBal (OpenBal+Qty)
---------  -------  ---  --------  ----------
707001304  597      -48  20100414  549
707001304  549      -30  20100415  519
707001304  519      -30  20100419  489
707001304  489      -54  20100420  435

Qty日ごとにデータを集計しDateて減算するにはどうすればよいですかOpenBalClosingBal1 日は、次の日の残高を開きます。

お知らせ下さい。

4

4 に答える 4

0

元のテーブルには、すべての行に同じOpenBalが含まれています。OPはそれが前日のCloseBalであることを望んでいます

Oracle 10g、11g、SQL Server 2012、およびDB2 9.5の場合、LAG関数を使用して、以前に計算された値にアクセスできます。

于 2012-07-25T07:18:58.193 に答える
0

これは役立つかもしれません:

SELECT Customer, OpenBal, Date, SUM(OpenBal + Qty) AS Closingbal FROM Table_Name
GROUP BY Date, Customer, OpenBal
于 2012-07-25T07:12:41.383 に答える
0

おそらく何か不足していますが、列を で追加することはできません+か?

select  Customer
,       OpenBal
,       Qty
,       Date
,       OpenBal + Qty as ClosingBal
from    YourTable
于 2012-07-25T06:56:15.377 に答える
0

これを試して:

insert into t_Customer values

(707001304,597,-48,20100414),
(707001304,597,-30,20100415),
(707001304,597,-30,20100419),
(707001304,597,-54,20100420)

select * from t_Customer

;WITH CTE as(select ROW_NUMBER() over (order by Customer) as sno,Customer,OpenBal,Qty,date,OpenBal+Qty as clsBal from t_Customer)
,CTE1 as (
select sno,Customer,OpenBal,Qty,date,clsBal from CTE where sno=1
union all
select c.sno,c.Customer,c1.clsBal,c.Qty,c.date,c1.clsBal+c.qty from CTE1 c1 inner join CTE c on c1.sno+1 =c.sno 
)
SELECT * FROM CTE1
于 2012-07-25T09:46:09.577 に答える