【问题标题】:How to maintain a running balance in a month wise report如何在每月明智的报告中保持运行平衡
【发布时间】:2015-06-25 11:05:32
【问题描述】:
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

此查询返回按月报告的帐户余额。我想要一个结果是运行平衡。

例子:

一月我贷5000,二月我贷2000

我的查询结果是

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

我想要这样的结果:

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

【问题讨论】:

  • 这在 SQL Server 2012 中很简单,但在 2008 年并非如此。您能否提供一个简单的表结构,我可以用来向您展示 2008 年的示例?

标签: sql sql-server sql-server-2008 pivot


【解决方案1】:

试试这个

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

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

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

【讨论】:

  • 请写出三月的表达式:mar=?
  • 选择 YEAR (DateOfTransaction),left(datename(mm,dateadd(mm,n-1,0)),3) 作为月份,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 Table inner join #temp on n > = datepart(mm,DateofTransaction) group by Year(dateoftransaction), n .... .pivot
  • 您的第一个查询工作 gud,但 2014 年 12 月和 2015 年 1 月未添加。请致电此实施
  • 现在我在管理员帐户中使用互联网,我无法复制过去。
  • 你能写下select和group by语句吗?还要确认临时表是否包含从 1 到 12。
猜你喜欢
  • 1970-01-01
  • 2021-12-30
  • 2013-12-14
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
  • 2017-10-28
  • 2021-03-12
  • 1970-01-01
相关资源
最近更新 更多