帮朋友写的一个累计SQL代码,有分季度,和总累计

原创 2016年01月14日 09:40:52
--创建示例表
Create Table T1
(_Date Varchar(10),RunTime INT)
Go
Insert T1 (_Date,RunTime)
  Values ('2015.04',10),('2015.05',20),('2015.06',30),('2015.07',40),('2015.08',25),('2015.09',35),('2015.10',15),('2015.11',55)

--注意在字符串中,月份以 04、05表示,否则会影响后续的计算顺序,比如字符串 '2015.4'>'2015.11',但实际上4月要小于11月

 Go

--以视图方式实现,以方便下游当成表来提取数据
Create View dbo.vT1
As
  With C As
  (Select _Date,LEFT(_Date,4) as YY,(Cast(Right(_Date,2) as Int)-1)/3+1 as Qt,RunTime,
          ROW_NUMBER() OVER (ORDER BY _Date) as RN
     From dbo.T1)
  Select _Date,RunTime,
         (Select Sum(RunTime) as A From C as C2 Where YY=C.YY and Qt=C.Qt and RN<=C.RN) as A,
         (Select Sum(RunTime) as A From C as C3 Where RN<=C.RN) as B
   From C
Go
Select * From dbo.vT1 Order By _Date

GO

--以SP实现,像报表一样
Create Procedure RepData
As
 Declare @A INT=0,@B INT=0,@Qt INT=0
 Select _Date,(Cast(Right(_Date,2) as Int)-1)/3+1 as Qt, --季度值
        RunTime,@A as A,@B as B INTO #T
   From T1
 --建聚集索引是为了排序
 Create Clustered Index CX_T_99999 On #T (_Date)
 --逐行更新累计值
 Update #T
   Set @A=Case When @Qt=Qt Then @A+RunTime Else RunTime End,
       @B=@B+RunTime,
       A=@A,B=@B,@Qt=Qt
 Select _Date,RunTime,A,B
   From #T Order By _Date
Go

--执行:
Exec RepData


SQL Server 2008及以上版本支持,2005/2000得再调整下

SQL实现每月之前的金额累计

http://blog.csdn.net/civilman/article/details/6525523
  • u012843873
  • u012843873
  • 2017年03月29日 17:47
  • 823

如何对每天的数据进行累计计算和啊?

字段为日期,发电量,累计发电量。 每天输入发电量,如何能够跟输入的当前值计算出从1号至当前日期的累计发电量。 即每天的累计量均不同,均为1号到对应记录的日期的累计量 请教这个表达式如何写啊?...
  • u012523378
  • u012523378
  • 2013年10月21日 16:02
  • 398

SQL SERVER 实现按月累计效果

SQL SERVER没有ORACLE的sum over( order by)那样的功能,至少目前是这样。 实现代码: declare @电量表 table(日期 int,日发电量 float, 计划发...
  • apollo_ts
  • apollo_ts
  • 2010年09月25日 15:50
  • 3392

使用SQL查询累计值

有这样一个要求,它要创建一个SQL Server查询,其中包括基于事件时刻的累计值。典型的例子就是一个银行账户,因为你每一次都是在不同的时间去存钱和取钱。对任意一个账户来说,在某个时间点都要算出它的借...
  • wlinglong
  • wlinglong
  • 2007年01月13日 10:47
  • 516

SQL查询按年、月累计求和

先有如下表格 C为主键 想查询出每年每月的累计交易额 SELECT 年, 月, 交易额, (SELECT SUM(交易额) ...
  • calorand
  • calorand
  • 2017年02月18日 19:15
  • 2116

Hive实现累计报表查询

1.需求 有如下访客访问次数的统计表 t_access 访客 月份 访问次数 A 2015-01 5 A 2015-01 15 B 2015-01 5 A 2015-01 8 B 2015-01 ...
  • u012808902
  • u012808902
  • 2017年09月06日 22:57
  • 717

Hive经典面试题——级联求和(访客访问统计报表)

在大数据面试中,Hive知识的考察大部分会问级联求和,业务场景虽然有很多种,比如说,年收入,月收入统计;访客访问次数年统计,月统计。等等。但是基本根源知识是级联求和,本文就以访客访问统计为例。 1、...
  • zhoutaochun
  • zhoutaochun
  • 2018年01月13日 23:45
  • 79

Sql Server累计求和问题

CSDN上一位朋友提出的问题:供电局6月1号到8号供点电量分别为8.14,8.25,8.33,8.36,8.47,8.77,8.23,8.45以次数据构成的数据库,要求查询累积供电量,比如2号的累积供...
  • Teng_s2000
  • Teng_s2000
  • 2006年02月24日 12:59
  • 4475

巧用sql进行数据累加

转:http://www.cnblogs.com/mylhei/archive/2011/03/09/1978184.html 巧用sql进行数据累加 比如有这样一...
  • pzasdq
  • pzasdq
  • 2016年12月12日 10:32
  • 1717

Oracle BIEE 中的时间维与时间轴函数,同期,同比,环比,累计,同期累计计算

Oracle BIEE 中的时间维与时间轴函数     累计、同比、环比是 BI 项目中常用的分析方法。本文讲述如何利用 Oracle BIEE 的时间维(Time Dimension)...
  • yuanqingyu0123
  • yuanqingyu0123
  • 2012年11月30日 16:05
  • 2580
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:帮朋友写的一个累计SQL代码,有分季度,和总累计
举报原因:
原因补充:

(最多只允许输入30个字)