SQL Server迭代求和

drop table t_geovindu 

create table t_geovindu
(
    xid int IDENTITY (1, 1),
    price money,
    DebitCredit VARCHAR(2),
    adate datetime default(getdate()) 

) 

insert into t_geovindu(DebitCredit,price) values('C',10)
insert into t_geovindu(DebitCredit,price) values('C',25)
insert into t_geovindu(DebitCredit,price) values('C',36)
insert into t_geovindu(DebitCredit,price) values('C',66)
insert into t_geovindu(DebitCredit,price) values('D',-11)
insert into t_geovindu(DebitCredit,price) values('C',32)
insert into t_geovindu(DebitCredit,price) values('D',-50) 

--
select a.xid, a.price,
 (select sum(price) from t_geovindu b where b.xid <= a.xid) as Balance,DebitCredit
from t_geovindu a 

--
select xid, price,
 (case  when Balance  is null then price else Balance  end ) as Balance
from
 (select a.xid, (select  sum(price) from t_geovindu b where b.xid < a.xid)  as Balance  , a.price
from t_geovindu a)  x
-- 

select  sum(price) from t_geovindu b where (b.xid < a.xid) 

select a.xid, (select  sum(price) from t_geovindu b where b.xid < a.xid)  as Balance  , a.price
from t_geovindu a 

---
create function mysum(@xh int, @price int) returns int
begin
   return (select
           (case when Balance  is null then @price  else Balance  end) as Balance
          from ( select  sum(price) as Balance  from t_geovindu where xid < @xh) x)
end
---
select xid, price, dbo.mysum(xid, price)  as Balance
from t_geovindu 

create table vipnoDly
(
    VID Int IDENTITY (1, 1) PRIMARY KEY, invoiceno nvarchar(50),indate datetime, vipno nvarchar(50),amount int,dcr nvarchar(20)
)
go 

SET IDENTITY_INSERT [dbo].vipnoDly ON
Insert vipnoDly(invoiceno,indate,vipno,amount,dcr) Select invoiceno,indate,vipno,amount,dcr From vipdly AS A Where vipno='654321' order by A.indate 

select * from vipnoDly 

--SET IDENTITY_INSERT dbo.Tool ON 

Create Function [dbo].[GetVipNoDlyList]
(
    @ID nvarchar(20)
)
Returns @Tree Table (VID Int IDENTITY (1, 1), invoiceno nvarchar(50),indate datetime, vipno nvarchar(50),amount int,dcr nvarchar(20))
As
Begin
Insert @Tree(invoiceno,indate,vipno,amount,dcr) Select invoiceno,indate,vipno,amount,dcr From vipdly AS A Where vipno=@ID order by A.indate
Return
End
GO 

select * from [dbo].[GetVipNoDlyList] ('geovindu') as a order by indate 

---SQL Server聚合函数和子查询迭代求和
---如果ID不是第一條記錄,會出現第一行統計合計有問題,所以需查詢生成一個新的ID增長記錄
select a.VID, a.amount,
 (select sum(amount) from [dbo].[GetVipNoDlyList] ('geovindu') b where b.VID <= a.VID) as Balance
from [dbo].[GetVipNoDlyList] ('geovindu') a
时间: 2024-08-03 09:01:45

SQL Server迭代求和的相关文章

数据库-新手求教SQL server语句 求和,多个表之间的操作

问题描述 新手求教SQL server语句 求和,多个表之间的操作 SQL求和插入,求C表更新每个OrderID的SUM_Fee,SUM_Fee对应B表每个OrderId的总和(A表的B_ID对应B表的ID,B_ID记录单个Fee)? 解决方案 SQL Server 2005 用触发器跟踪表操作 解决方案二: update C set SUM_Fee=(select SUM(orderid) from B where B.orderid=C.orderid)没看懂A表,不是太明确的需求... 解

Asp+SQL Server 2005文本字段列的值求和

原来的规划设计number字段为文本.不改动类型情况下格式化 SUM(CAST(number AS integer)) 即可 实例代码:  代码如下 复制代码 <%set mRs=server.createobject("adodb.recordset") mSQL="select SUM(CAST(字段名 AS integer)) from 表名 where 条件语名" mRs.open mSQL,conn,1,3 Response.write mRs(0)

Microsoft SQL Server 2005 中的 XML 支持(1)

本文探讨 SQL Server 2005 中内置的 XML 支持.描述了这种支持如何与 .NET 框架 V2.0 和本机代码(例如 OLEDB 和 SQLXML)均支持的客户端编程相集成. 一.简介 可扩展标记语言 (XML) 作为一种与平台无关的数据表示形式已被广泛采用.它对于在松散耦合且完全不同的系统,以及各种企业到企业 (B2B) 应用和工作流范畴内交换信息是很有用的.数据交换已成为 XML 技术的主要驱动力之一.. XML 在企业应用程序中的使用正日益广泛,它主要用于对半结构化和非结构化

SQL Server 2005 Compact Edition 的数据存储体系结构

摘要: SQL Server 2005 Compact Edition (SSCE) 为构建多种应用程序类型提供功能强大并且轻型的数据存储引擎.本文介绍了客户端应用程序和小规模服务器应用程序的数据存储问题.文章讨论了 SSCE 的功能集以及该功能集如何解决数据存储问题.全文对各种与 SSCE 相适用的应用程序体系结构进行了介绍,重点讲解了应用程序类型的属性以及 SSCE 如何满足每种应用程序类型的要求. 简介 为应用程序选择合适的数据存储体系结构可以说是件令人望而生畏的任务.可供选择的数据存储技

SQL Server 2005 中的商务智能和数据仓库(2)

例如,设想一个"客户"维度.关系型源表有八列: • 客户键 • 客户名称 • 年龄 • 性别 • 电子邮件 • 城市 • 地区 • 国家 相应的 Analysis Services 维度应具有七个属性: • 客户(整型键.以"客户名称"作为名称) • 年龄.性别.电子邮件.城市.地区.国家 数据中存在一种自然层次结构,{国家.地区.城市.客户}.出于导航目的,应用程序开发人员可以选择创建第二个层次结构:{年龄.性别}.商务用户并没有看到这两个层次结构行为方式之间有何

测试SQL Server业务规则链接方法

有一个古老的争论,是关于在哪里存储应用程序业务逻辑的:是在应用程序本身的业务逻辑层中还是在数据库层中.应用程序逻辑层的绝对支持者提出,数据库的唯一目的就是保存数据,以备应用程序所用.提倡用数据库来存储业务规则的人则坚持认为,业务规则最好存储在数据库中,因为数据也存储在那里,规则在那里更容易运行.而在我看来,对于存储应用程序的逻辑来说,没有一个"最好的地方"--它真正取决于您正在解决的业务问题. 链接数据库存储过程 如果您更喜欢将全部或一部分业务逻辑存储在数据库中的话,那么知道SQL S

分析MS SQL Server里函数的两种用法

server|函数 SQL Server里函数的两种用法(可以代替游标) 1. 因为update里不能用存储过程,然而要根据更新表的某些字段还要进行计算.我们常常采用游标的方法,这里用函数的方法实现. 函数部分: 以下是引用片段: CREATE FUNCTION [DBO].[FUN_GETTIME] (@TASKPHASEID INT) RETURNS FLOAT AS BEGIN DECLARE @TASKID INT, @HOUR FLOAT, @PERCENT FLOAT, @RETUR

SQL Server 2000安全配置完全攻略

server|安全|攻略 数据库是电子商务.金融以及ERP系统的基础,通常都保存着重要的商业伙伴和客户信息.大多数企业.组织以及政府部门的电子数据都保存在各种数据库中,他们用这些数据库保存一些个人资料,比如员工薪水.个人资料等等.数据库服务器还掌握着敏感的金融数据.包括交易记录.商业事务和帐号数据,战略上的或者专业的信息,比如专利和工程数据,甚至市场计划等等应该保护起来防止竞争者和其他非法者获取的资料.数据完整性和合法存取会受到很多方面的安全威胁,包括密码策略.系统后门.数据库操作以及本身的安全

SQL Server里函数的两种用法(可以代替游标)

server|函数|游标 SQL Server里函数的两种用法(可以代替游标)1. 因为update里不能用存储过程,然而要根据更新表的某些字段还要进行计算.我们常常采用游标的方法,这里用函数的方法实现. 函数部分:CREATE FUNCTION [DBO].[FUN_GETTIME] (@TASKPHASEID INT) RETURNS FLOAT AS BEGIN   DECLARE @TASKID INT,          @HOUR FLOAT,           @PERCENT