关于sql server:SQL Count Running Total in a single column | 珊瑚贝

SQL Count + Running Total in a single column


我对 SQL 还很陌生,所以请多多包涵。
我有一个带有日期列 (Date) 和计数列 (Count)

的表 (DataTable)

  • 2015 年 1 月 1 日 10
  • 2015 年 1 月 2 日 9
  • 2015 年 1 月 3 日 12
  • 2015 年 1 月 4 日 7
  • 2015 年 1 月 5 日 8
  • 2015 年 1 月 6 日 10
  • 2015 年 1 月 7 日 10
  • 2015 年 1 月 8 日 8
  • 2015 年 1 月 9 日 9
  • 2015 年 1 月 10 日 10
  • 2015 年 1 月 11 日 11
  • 2015 年 1 月 12 日 11

我需要创建一个新表来计算:计数、运行总计、运行财政年度、运行 12 个月。然后将这些全部添加到一个列中,并添加一个新的类别列,将这些总和按”月”、”合同日期”、”财政年度”和”12 个月到月底”分开。

  • 月份显示该月的计数
  • 迄今为止的合同就像从开始日期到结束日期的运行总计
  • 财政年度从 6 月开始,就像一个运行总计,直到它到达下一年的 5 月,之后即将到来的 6 月重置其计数
  • 到月底的 12 个月将前 11 个月添加到当前月份
  • 结果将是

    • 2015 年 1 月 1 日 10 个月
    • 2015 年 1 月 2 日 9 个月
    • 2015 年 1 月 3 日 12 个月
    • 2015 年 1 月 4 日 7 个月
    • 2015 年 1 月 5 日 8 个月
    • 2015 年 1 月 6 日 10 个月
    • 01/07/2015 10 个月
    • 2015 年 1 月 8 日 8 个月
    • 2015 年 1 月 9 日 9 个月
    • 2015 年 1 月 10 日 10 个月
    • 2015 年 1 月 11 日 11 个月
    • 2015 年 1 月 12 日 11 个月
    • 01/01/2015 10 合同至今
    • 2015 年 1 月 2 日 19 合同至今
    • 01/03/2015 31 合同至今
    • 01/04/2015 39 合同至今
    • 01/05/2015 47 合同至今
    • 2015 年 1 月 6 日 57 合同至今
    • 01/07/2015 67 合同至今
    • 2015 年 1 月 8 日 75 合同至今
    • 2015 年 1 月 9 日 84 合同至今
    • 2015 年 1 月 10 日 94 合同至今
    • 2015 年 1 月 11 日 105 合同至今
    • 2015 年 1 月 12 日 116 合同至今
    • 等等

    我将如何在一个查询中对这一切进行编程(无需创建 4 个单独的表)
    我需要使用 SQL Server Management Studio 2008 或 2008r2
    据我所知:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT * INTO DataTableFinal FROM (
    SELECT DATE, COUNT
    FROM DataTable
    UNION ALL
    SELECT DATE, COUNT = SUM (COUNT) OVER (ORDER BY DATE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
    FROM DataTable
    UNION ALL
    SELECT DATE, COUNT =
    FROM DataTable
    UNION ALL
    SELECT DATE, COUNT =
    FROM DataTable
    ) AS tmp
    • 您使用的是哪个数据库?
    • SQL Server 管理工作室 2008


    我不认为 sql server 2008 在窗口函数中支持 sum() 和 order by。试试这样的

    1
    2
    3
    4
    5
    6
    7
    8
    SELECT dates,[COUNT],‘MOnth’
    FROM   Yourtable
    UNION ALL
    SELECT dates,run,‘Contract to Date’
    FROM   Yourtable a
           CROSS apply (SELECT SUM([COUNT])
                        FROM   Yourtable  b
                        WHERE  a.dates >= b.dates) cs (run)

    SQLFIDDLE 演示

    • 谢谢你的工作,我已经设法让 12 个月的工作结束日期,但我似乎无法弄清楚财政年度(澳大利亚从 6 月开始)


    最终结果:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    SELECT dates,[COUNT],‘Month’                    
    FROM   Yourtable                    
    UNION ALL                  
    SELECT dates,cnt,‘Contract to Date’                
    FROM   Yourtable a                  
        CROSS apply (SELECT SUM([COUNT])            
            FROM   Yourtable b
            WHERE  a.dates >= b.dates) cs (cnt)
    UNION ALL                  
    SELECT dates,cnt,’12 Months to End Date’                    
    FROM   Yourtable a                  
        CROSS apply (SELECT SUM([COUNT])            
        FROM   Yourtable b
        WHERE  a.dates >= b.dates AND b.dates >= DATEADD(MONTH, 12, a.dates)) cs (cnt)
    UNION ALL                  
    SELECT dates,cnt,‘Financial Year’                  
    FROM   Yourtable a                  
        CROSS apply (SELECT SUM([COUNT])            
            FROM   Yourtable b
            WHERE  a.dates >= b.dates AND b.dates >= DATEADD(YEAR,DATEDIFF(MONTH,‘19100701’,a.dates)/12,‘19100701’)) cs (cnt)

    来源:https://www.codenong.com/32086419/

    微信公众号
    手机浏览(小程序)

    Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9682.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
    0
    分享到:
    没有账号? 忘记密码?