2012-02-21 129 views
0

我有一張表,我保存有關財務回報的信息。這些專欄包括收據,維修,service_amount,輪胎,燃料,薪金許可等。如何獲取累計總計mysql

我想獲得的累計淨回籠,如:

Date  Receipts  repairs  service amount Total costs net Return 
2012-01-10 0.00   120,000.00 0.00   120,000.00 120,000.00 
2012-01-12 60,000.00  0.00   0.00   60,000.00 60,000.00 

我目前使用此查詢:

SELECT 
     a.consignment_date, a.receipts, a.service_amount, a.repairs, a.tyres, 
     a.salaries_allowances, a.clearing_fee, a.others, 
     a.service_amount + a.repairs + a.tyres + a.salaries_allowances + a.clearing_fee + a.others as total_costs, 
     (b.receipts -(a.service_amount + a.repairs + a.tyres + a.salaries_allowances + a.clearing_fee + a.others)) as netreturn 
FROM 
     vw_local_freight a CROSS JOIN vw_local_freight b 
WHERE 
     a.consignment_date >= b.consignment_date AND a.vehicle_no='123X' 
GROUP BY a.consignment_date 
+1

你的問題是模糊的,它不詳細,他們是如何計算的,將承擔所有費用被算作「修理」並且是成本,而收據是信用? – 2012-02-21 09:15:19

回答

0

我想看看查詢如

SELECT 
    consignment_date.*, 
    consignment_date.credits - consignment_date.costs AS totalCosts, 
    (@runningTotal := @runningTotal + consignment_date.credits - consignment_date.costs) AS netReturn 
FROM (
    SELECT 
     consignment_date, 
     SUM(receipts) AS credits 
     SUM(service_amount + repairs + tyres + salaries_allowances + clearing_fee + others) AS costs 
    FROM vw_local_freight 
    WHERE vehicle_no = '123x' 
    GROUP BY consignment_date 
) AS a, (SELECT @runningTotal := 0) AS b 

子查詢會計算您的成本和積分,然後外部查詢執行您的運行總計。如果您需要在內連接中添加單獨的列數,那麼可以輕鬆添加它們。

+0

上述查詢工作正常,但我不得不做一些更改,以獲得下面所需的結果是從你張貼的修改後的查詢。感謝西蒙,阿里伊薩和莫斯塔喬你們給我一個見解 – smilezjim 2012-02-21 10:54:38

0

試試這個:

SET @runtot:=0; 
SELECT 
    q1.d, 
    q1.c, 
    (@runtot := @runtot + q1.c) AS rt 
FROM 
    (SELECT 
     DAYOFYEAR(date) AS d, 
     COUNT(*) AS c 
    FROM orders 
    WHERE hasPaid > 0 
    GROUP BY d 
    ORDER BY d) AS q1 
+1

將計數加在一起的地方在哪裏?我認爲OP想要加總數並計算合計 – Kaii 2012-02-21 09:27:46

+0

@Ali Issa總成本通過將service_amount,repairs,tires,salaries_allowances,clearing_fee等相加(總和)來計算,而淨回報以收益計算 - 總和總成本但淨支付是累積的。 – smilezjim 2012-02-21 09:29:22

0

好吧,我立足查詢我的答案,而不是你的預期表結果:

SELECT *, receipts - total_costs as NetReturn FROM (
    SELECT a.consignment_date, sum(a.receipts) receipts, sum(a.service_amount), 
    sum(a.repairs), sum(a.tyres), sum(a.salaries_allowances), 
    sum(a.clearing_fee), sum(a.others), sum(a.service_amount + a.repairs 
    + a.tyres + a.salaries_allowances + a.clearing_fee + a.others) as total_costs 
    FROM vw_local_freight a 
    WHERE a.vehicle_no = '123X' 
    GROUP BY a.consignment_date 
) S