当前位置: 代码迷 >> Sql Server >> SQL 2008 在原表中计算某一列的跟(或新增加一列,计算前一列的累计数),求语句
  详细解决方案

SQL 2008 在原表中计算某一列的跟(或新增加一列,计算前一列的累计数),求语句

热度:95   发布时间:2016-04-24 10:06:54.0
SQL 2008 在原表中计算某一列的和(或新增加一列,计算前一列的累计数),求语句
目前有一张表,表名BM2008,

原表如下
成交日期 证券名称 发生金额
20080326 万  科A -2413.2
20080327 万  科A -2478.56
20080331 万  科A -7755.42
20080331 万  科A -5170.29

设想一、想在原表中增加一行并直接计算出某一列的和,效果如下。

成交日期 证券名称 发生金额
20080326 万  科A -2413.2
20080327 万  科A -2478.56
20080331 万  科A -7755.42
20080331 万  科A -5170.29
合计                         -17817.47

设想二、如果上述设想有缺陷,不能实现。想在原表中增加一列,计算前一列的累计数。效果如下。
成交日期 证券名称 发生金额    累计
20080326 万  科A -2413.2     -2413.2
20080327 万  科A -2478.56   -4891.76
20080331 万  科A -7755.42   -12647.18
20080331 万  科A -5170.29   -17817.47

发生金额在可能是正数,也有可能是负数,最大两位小数。
谢谢!求达人给直接可运行的语句。只是提示,因我太菜,不会写语句。
------解决方案--------------------
第二種方法
select *,IDENTITY(int,1,1) as Id into #temp from BM2008
select 成交日期,證券名稱,發生金額,(select SUM(abc.發生金額) from #temp as abc where abc.id<(def.id+1)) as 累計 from #temp as def
------解决方案--------------------
引用:
Quote: 引用:

第二種方法
select *,IDENTITY(int,1,1) as Id into #temp from BM2008
select 成交日期,證券名稱,發生金額,(select SUM(abc.發生金額) from #temp as abc where abc.id<(def.id+1)) as 累計 from #temp as def


提示
数据库中已存在名为 '#temp' 的对象。


在后面加个
DROP TABLE #TEMP
GO
  相关解决方案