2017-03-21 49 views
-1

運行平衡,我使用嵌入式Derby數據庫,我想補充通過計算借方和貸方金額,所以請告訴我,解決方案代碼和圖像運行平衡列也可低於如何計算在SQL

(如您可以在圖像平衡總看是不準確的)

SELECT 
V_DATE,FLAG,V_NUM,V_NARATION, 
sum(VDTL.DR_AMOUNT) AS DEBIT, 
sum(VDTL.CR_AMOUNT) AS CRIDIT, 
sum(dr_amount)-sum(cr_amount) as total 
FROM VOUCHARDETAIL AS VDTL 
INNER JOIN VOUCHARMASTER AS VMST 
ON VDTL.DTL_NUM =VMST.MST_NUM 
WHERE (V_DATE BETWEEN '12-03-2017' AND '14-03-2017') AND (AC_CODE=60030002) 
GROUP BY 
V_DATE,FLAG,V_NUM,V_NARATION 
ORDER BY 
V_DATE 

enter image description here

+1

爲什麼你張貼同樣的問題[http://stackoverflow.com/questions/42897968/how-to-calculate-running-balance-in-sql](http ://stackoverflow.com/questions/42897968/how-to-calculate-running-balance-in-sql)? –

回答

0

這可能是一個可能的解決方案。

SELECT V_DATE, 
     FLAG, 
     V_NUM, 
     V_NARATION, 
     SUM(VDTL.DR_AMOUNT) OVER(ORDER BY V_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS DEBIT, 
     SUM(VDTL.CR_AMOUNT) OVER(ORDER BY V_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS CREDIT 
(SUM(VDTL.DR_AMOUNT) OVER(ORDER BY V_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)-SUM(VDTL.CR_AMOUNT) OVER(ORDER BY V_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) as TOTAL 
FROM VOUCHARDETAIL AS VDTL 
INNER JOIN VOUCHARMASTER AS VMST 
ON VDTL.DTL_NUM =VMST.MST_NUM 
WHERE (V_DATE BETWEEN '12-03-2017' AND '14-03-2017') AND (AC_CODE=60030002) 
ORDER BY V_DATE 
0

試一試)

select sel.*, sel.total + LAG(sel.total,1,0) over (order by Sel.V_DATE) as running_balance from (SELECT 
    V_DATE,FLAG,V_NUM,V_NARATION, 
    sum(VDTL.DR_AMOUNT) AS DEBIT, 
    sum(VDTL.CR_AMOUNT) AS CRIDIT, 
    sum(dr_amount)-sum(cr_amount) as total, 
    FROM VOUCHARDETAIL AS VDTL 
    INNER JOIN VOUCHARMASTER AS VMST 
    ON VDTL.DTL_NUM =VMST.MST_NUM 
    WHERE (V_DATE BETWEEN '12-03-2017' AND '14-03-2017') AND (AC_CODE=60030002) 
    GROUP BY 
    V_DATE,FLAG,V_NUM,V_NARATION 
    ORDER BY 
    V_DATE) Sel 
    order by Sel.V_DATE