0

私はこのテーブルを持っています:

Date_on      deposited  withdrawal   in_bank
2012-09-1      3000       2000        50000
2012-09-2/t    4000/t        0        54000
2013-09-3/t    3000       2000        55000

ここで、クエリを実行して、預金額を追加し、前日のエントリから引き出しを差し引きたいと考えていますin_bank。どうやってやるの?誰でもそれについて私を助けることができますか? これは私のクエリです:

select date_on, in_bank,((in_bank+deposited)-withdrawal)
  from  tablename where date_on > '2012-09-01' order by date_on
4

4 に答える 4

1
SELECT today.withdrawal, today.deposited, today.date_on,
  (IFNULL(today.deposited, 0) - IFNULL(today.withdrawal, 0)) + IFNULL((SELECT in_bank FROM tablename AS yesterday WHERE yesterday.date_on = DATE_SUB(today.date_on, INTERVAL 1 DAY)), 0)
FROM tablename AS today
WHERE date_on BETWEEN '2012-09-01' AND '2012-09-02'
ORDER BY date_on ASC

前日の日付が見つからない場合、クエリは残高がゼロであると想定します。

フィドルを追加 http://sqlfiddle.com/#!2/d8261/14

于 2012-11-20T11:31:12.677 に答える
0
SELECT 
  date_on, 
  in_bank, 
  (( ISNULL(in_bank, 0) + ISNULL(in_deposited,0)) - ISNULL(withdrawal,0))
FROM tablename 
WHERE date_on > '2012-09-01' 
ORDER BY date_on
于 2012-11-20T11:58:19.300 に答える
0

これを試して:

SELECT
  t1.date_on,
  t1.in_bank,
  (
    SELECT in_bank
    FROM
    (
      SELECT *, (@rownum2 := @rownum2 +1) rank
      FROM Table1,(SELECT @rownum2 :=0 ) t
      ORDER BY date_on 
     ) t2 WHERE t1.rank - t2.rank = 1
   ) - t1.withdrawal - deposited "total"
FROM
(
  SELECT *, (@rownum := @rownum +1) rank
  FROM Table1,(SELECT @rownum :=0 ) t
  ORDER BY date_on 
) t1;

SQL フィドルのデモ

于 2012-11-20T11:39:49.390 に答える
0

私はmysqlにあまり詳しくありませんが、これは役立つかもしれません

select account.*,D.expectable from account left join 
(
select deposited - withdrawal + in_bank as expectable,DATE_ADD(Date_on,INTERVAL 1 DAY) as nDate from account
)
D on account.Date_on = D.nDate
于 2012-11-20T12:32:07.767 に答える