2013-02-17 4 views
0

많은 양의 데이터를 가지고있는 MySQL 테이블을 가지고 있습니다. 생성 된 열의 합계를 표시하고 싶습니다 ...mysql 쿼리에서 런타임에 생성 된 결과의 합

두 열을 뺀 결과의 SUM을 표시하고 싶습니다. 여기에 내가 무엇을 가지고

CREATE TABLE amounts(
id MEDIUMINT NOT NULL AUTO_INCREMENT, 
bank_amount INT, 
amount INT, 
PRIMARY KEY (id) 
) ENGINE=MyISAM; 
INSERT INTO `amounts` (`id`, `bank_amount`, `amount`) VALUES (NULL, '1000', '100'), 
(NULL, '2000', '200'),(NULL, '3000', '300'),(NULL, '1200', '500'),(NULL, '2000', '600'), 
(NULL, '1202', '800'),(NULL, '220', '50'); 

나는 쿼리 이상이 쿼리

SELECT bank_amount,amount,(bank_amount-amount) as bal from amounts where ...... 

나에게이 결과

bank_amount 금액 BAL

1000 100 900

2000 (200)을 줄 것이다있다 1800

3000 300 2700

지금 나는 또한 + 1800 (900)와 같은 BAL의 SUM을 보여주고 싶은에

답변

1

이게 무슨 뜻이야? 이는 각 행에 대해 SUM을 생성합니다

SELECT x.* 
     , x.bank_amount-x.amount bal 
     , SUM(y.bank_amount-y.amount) running 
    FROM amounts x 
    JOIN amounts y 
    ON y.id <= x.id 
    GROUP 
    BY id; 
+----+-------------+--------+------+---------+ 
| id | bank_amount | amount | bal | running | 
+----+-------------+--------+------+---------+ 
| 1 |  1000 | 100 | 900 |  900 | 
| 2 |  2000 | 200 | 1800 | 2700 | 
| 3 |  3000 | 300 | 2700 | 5400 | 
| 4 |  1200 | 500 | 700 | 6100 | 
| 5 |  2000 | 600 | 1400 | 7500 | 
| 6 |  1202 | 800 | 402 | 7902 | 
| 7 |   220 |  50 | 170 | 8072 | 
+----+-------------+--------+------+---------+ 
+0

: 고마워. – Methew

0

2700 당신은

SELECT 
    A.id, 
    A.bank_amount, 
    A.amount, 
    (A.bank_amount - A.amount) as bal, 
    T.Total_bal 
FROM amounts A 
    JOIN 
     (
      SELECT Id, SUM(bank_amount-amount) Total_bal 
      FROM amounts 
      GROUP BY Id 
    ) T 
     ON A.Id = T.Id 

을 찾고 계십니까?

+0

... 내가 첫 번째 행의 1000 100 900 ... 전체 result.For 예 합 내가 이것을 가지고 말할 수 원하는 두 번째 행에 내가 ... 2000이 있습니다 200 1800. 이제 나는 900 + 1800의 결과가 필요합니다. – Methew

+0

@Methew 무엇이 잘못 되었나요? 당신은 당신이 원하는 정확한 것을 얻습니다. 당신이 질문을 시도 했습니까? –

+0

@Methew 각 Id에 대해이 결과를 얻고 각 Id에 대해 여러 행을 갖고 싶습니까? –

관련 문제