如何在每月明智的报告中保持 运行 余额
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
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