【问题标题】:SQL Server 2008 Running TotalSQL Server 2008 运行总数
【发布时间】:2016-11-04 06:06:39
【问题描述】:

我知道有人问过这个问题,但我完全感到困惑。

尝试使用 SQL Server 2008 计算每天运行的总计。已经在其他地方查看过解决方案,但仍然完全感到困惑。

下面的代码显示了每日销售额,但我无法得出一个运行总匹配。在这里查看了类似的解决方案,但没有运气。已经查看了 partition by、order by、CTE 等,但我还没有使用 SQL。

不胜感激,我的代码如下。我知道这只会返回按天分组的总数...

SELECT
    dim_invoice_date.invoice_date AS 'Invoice Date',
    round(SUM(invoice_amount_corp),2) AS 'Sales'
FROM 
    fact_om_bud_invoice 
JOIN
    dim_invoice_date ON fact_om_bud_invoice.dim_invoice_date_key = dim_invoice_date.dim_invoice_date_key 
WHERE   
    dim_invoice_date.current_cal_month IN ('Current') 
    AND fact_om_bud_invoice.budget_code IN ('BUDGET') 
GROUP BY 
    dim_invoice_date.invoice_date
HAVING 
    ROUND(SUM(invoice_amount_corp), 2) <> 0
ORDER BY
    'Invoice Date'

这将返回输出:

Invoice Date     Sales 
-----------------------
4/10/2016       24,132 
5/10/2016       15,849 
6/10/2016       24,481 
7/10/2016       10,243 
10/10/2016      42,398 
11/10/2016      24,187 

要求的格式类似于:

Invoice Date     Sales   Running Sales
-------------------------------------------
04/10/2016      24,132   24,132
05/10/2016      15,849   39,981 
06/10/2016      24,481   64,462
07/10/2016      10,243   74,705
10/10/2016      42,398   117,103
11/10/2016      24,187   141,290

dim_invoice_date 是一个数字字段,它正在查找单独的日期表以显示为日期时间。

【问题讨论】:

  • 给出一些示例记录和您的预期输出
  • 寻找类似的东西:
  • 我无法理解您真正想要的是 Invoice_amount_corp 是数字数据类型,或者如果没有发票,您还想要每天的总数??
  • 如果当天没有任何价值,就将其删除。
  • 我不确定是否可以将摘要添加到另一列,我认为您可以通过使用“ROLL UP”来进行摘要,它会添加一个新行作为摘要。跨度>

标签: sql sql-server-2008 cumulative-sum


【解决方案1】:

例如可以使用 WITH common_table_expression

WITH cte AS
     (
       SELECT 
         ROW_NUMBER() OVER(ORDER BY h.[Date]) RowN,
         h.[Date],
         SUM(s.Quantity) q
       FROM   
         Sales s
           JOIN Headers h
             ON s.ID_Headers = h.ID
       WHERE  
         h.[Date] > '2016.10.31'
       GROUP BY
         h.[Date]
     )

SELECT 
  c.[Date],
  c.q,
  SUM(c1.q)
FROM   
  cte c
    JOIN cte c1
      ON c1.RowN <= c.RowN
GROUP BY
  C.[Date],
  c.q
ORDER BY
  c.[Date]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-14
    • 2013-09-23
    • 1970-01-01
    • 2018-03-30
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多