如何在每月明智的报告中保持 运行 余额

How to maintain a running balance in a month wise report

SELECT * 
FROM
    (SELECT 
        YEAR (DateOfTransaction) AS year,
        LEFT(DATENAME(MONTH, DateOfTransaction), 3) AS month,
        SUM(CASE WHEN TransTypeName LIKE 'credit%' THEN amount ELSE 0 END) - 
            SUM(CASE WHEN TransTypeName LIKE 'Debit%' THEN amount ELSE 0 END) AS Balance 
     FROM 
        .............) AS t
PIVOT (SUM(balance) FOR month IN (jan, feb, march, ...., Dec)) AS pvt

此查询returns按月报告帐户余额。我想要的结果是 运行 余额。

示例:

一月我贷5000,二月我贷2000

我的查询结果是

 year  jan   feb march...dec
 2014  5000  2000 null ..null

我想要这样的结果:

 year  jan   feb     march...dec
 2014  5000 7000     null ..null 
           (5000+2000)    

试试这个

SELECT year,Jan = Jan, Feb = isnull(Jan,0)+isnull(Feb,0),....
FROM
    (SELECT 
        YEAR (DateOfTransaction) AS year,
        LEFT(DATENAME(MONTH, DateOfTransaction), 3) AS month,
        SUM(CASE WHEN TransTypeName LIKE 'credit%' THEN amount ELSE 0 END) - 
            SUM(CASE WHEN TransTypeName LIKE 'Debit%' THEN amount ELSE 0 END) AS Balance 
     FROM 
        .............) AS t
PIVOT (SUM(balance) FOR month IN (jan, feb, march, ...., Dec)) AS pvt)t

或者您可以简单地添加一个临时文件 table 来存储从 1 到 12 的数字

inner join #temp on n>=datepart(mm,DateofTransaction) group by year(transaction), n