有如下表
客户代码 客户名称 单据日期 本期应收 本期应付
01 北京 2004-1-1 1000 0
01 北京 2004-2-1 100 0
01 北京 2004-3-1 0 200
01 北京 2004-4-1 500 200
01 北京 2004-5-1 500 0
02 上海 2004-1-1 0 2000
02 上海 2004-2-1 100 0
02 上海 2004-3-1 0 200
02 上海 2004-4-1 500 200
02 上海 2004-5-1 500 0
我想要得到如下效果:其中(期末余额=上期期末余额+本期应收-本期应付)
客户代码 客户名称 单据日期 本期应收 本期应付 期末余额
01 北京 2004-1-1 1000 0 1000
01 北京 2004-2-1 100 0 1100
01 北京 2004-3-1 0 200 900
01 北京 2004-4-1 500 200 1200
01 北京 2004-5-1 500 0 1700
02 上海 2004-1-1 0 2000 -2000
02 上海 2004-2-1 100 0 -1900
02 上海 2004-3-1 0 200 -2100
02 上海 2004-4-1 500 200 -1800
02 上海 2004-5-1 500 0 -1300
设计如下:
create table 表(客户代码 varchar(10),客户名称 varchar(10),单据日期 datetime,本期应收 int,本期应付 int)
insert 表 select '01 ', '北京 ', '2004-1-1 ',1000,0
union all select '01 ', '北京 ', '2004-2-1 ',100 ,0
union all select '01 ', '北京 ', '2004-3-1 ',0 ,200
union all select '01 ', '北京 ', '2004-4-1 ',500 ,200
union all select '01 ', '北京 ', '2004-5-1 ',500 ,0
union all select '02 ', '上海 ', '2004-1-1 ',0 ,2000
union all select '02 ', '上海 ', '2004-2-1 ',100 ,0
union all select '02 ', '上海 ', '2004-3-1 ',0 ,200
union all select '02 ', '上海 ', '2004-4-1 ',500 ,200
union all select '02 ', '上海 ', '2004-5-1 ',500 ,0
select *,期末余额=(select sum(本期应收-本期应付) from 表 where 客户代码=a.客户代码 and 单据日期 <=a.单据日期)
from 表 a
<!--StartFragment -->
现在我有一个表,如下
ID 日期 上月累计
1 2010-5 50
1 2010-6 55
1 2010-7 60
2 2010-6 50
2 2010-7 40
想得到以下效果
ID 日期 上月累计 总计
1 2010-5 50 50
1 2010-6 55 105
1 2010-7 60 165
2 2010-6 50 50
2 2010-7 40 90
SQL语句如下
create table t11
(
ID int null,
日期 DATETIME NULL,
上月累计 INT NULL
)
INSERT INTO t11
select 1,2010-5, 50
union
select 1,2010-6,55
union
select 1 ,2010-7 ,60
union
select 2 ,2010-6, 50
union
select 2 ,2010-7 ,40
select *,总计=(select sum(上月累计) from t11 where t11.ID=a.ID AND t11.日期<=a.日期 )
from t11 a
结果如下:
<!--StartFragment -->
分享到:
相关推荐
在C#进行数据库编程时,尤其是在处理主从表的关系时,常常需要一次性更新多个表的多条记录,并确保这些操作的原子性,即要么全部成功,要么全部失败。在这种情况下,事务处理是至关重要的。事务提供了对数据库操作的...
在数据库管理中,经常需要对数据进行更新操作来确保数据的准确性和时效性。有时候,这种更新不仅限于同一张表内,还可能涉及到跨表的操作。例如,根据一张表中的某些条件来更新另一张表中的数据。本文将详细介绍如何...
本篇文章将详细介绍Oracle 11g R2中的几个核心概念:数据库、数据表、记录、字段,以及如何进行数据表的基本操作如创建(create)、修改(alter)和删除(drop)。 #### 二、数据库(Database) 数据库(Database)是一组...
在C#编程中,操作数据库记录时,我们经常需要获取数据表中的上一条或下一条记录,这在数据浏览、编辑或对比时非常常见。本文将深入探讨如何使用C#实现这一功能,主要关注数据库查询和数据游标的概念。 首先,我们...
在IT领域,尤其是在数据库管理和权限控制方面,"关于给用户分配资源(数据库表)中某条记录的操作权限问题-行控制"是一个常见的挑战。行控制,也称为行级权限或行级安全,是指允许管理员精确地指定哪些用户或角色可以...
实验中需要对Autoparts、category、Client、Clientkind、shoppingcart、Order、order_has_Autoparts和Comment表的记录进行修改,条件和修改后的数据由实验者设定。Update语句可以精确地定位并修改满足条件的记录,...
在IT行业中,数据库管理系统是核心组成部分,而MongoDB作为一个流行的NoSQL数据库,广泛应用于存储非结构化或半结构...同时,根据业务需求,可能还需要对拦截器进行扩展,比如设置过滤规则,只记录特定表或字段的变更。
单记录插入是指向表中插入一条记录,而批量插入是指向表中插入多条记录。我们将使用 Insert 语句分别向 Autoparts、category、Client、Clientkind、shoppingcart、Order、Order_has_Autoparts、Comment 表中插入数据...
在VB(Visual Basic)编程环境中,我们经常需要与数据库进行交互,这包括读取、插入、更新和删除数据。在本教程中,我们将专注于“利用UPDATE语句批量更新数据表中的数据”这一主题。UPDATE语句是SQL语言的一个重要...
本函数只对listview中的第一列数据做处理,对数据库中表进行快速的拖放,即可以选择单个记录进行拖放,也可以多条记录同时拖放,具体操作步骤是选中一条记录后,按住键盘的Ctrl键,即可对数据进行多选,选中记录后,...
综上所述,理论数据表的基本操作涵盖了数据表结构的查看、编辑、复制以及数据记录的管理和操作,这些都是数据库管理的基础,对于数据分析和信息管理至关重要。通过熟练掌握这些命令,可以更有效地管理和维护数据,...
kettle合并记录处理同表数据更新等操作.doc
例如,【格式】菜单在数据表视图中会增加一些关于记录格式调整的选项,而【记录】菜单则包含如数据项、导航等与记录操作相关的功能。工具栏上也会新增一些功能按钮,如增加新记录、删除记录等,便于用户快速执行操作...
本数据集包含了大约1万条针对MacBook的评论,为无标注的数据,适合进行文本聚类分析,以揭示用户对MacBook的各种观点和偏好。 首先,我们要理解数据集的构成。根据提供的压缩包子文件的文件名称列表,我们可以看到...
在MySQL数据库管理中,高效地删除多表数据是优化数据库操作的重要方面,特别是在处理大量关联数据时。"mysql 一条语句删除多表" 的主题就是关于如何通过单个SQL语句来删除关联的多个表的数据,从而节省数据库连接...
在这个特定的问题中,用户遇到了一个常见但棘手的异常情况:在主从表中,当尝试对已有主表记录进行从表的二次新增记录时,新添加的记录不会立即显示,只有在刷新界面后才会出现。 这个问题可能是由以下几个原因导致...
在实践中,根据具体需求灵活运用这些语句,可以实现对SQL Server表中数据的高效管理和操作。掌握这些基础操作对于任何IT专业人员来说都至关重要,因为它们是数据库管理、数据分析和应用程序开发的基础。
在实际工作中,我们通常需要对这些数据表进行查询、更新、删除等操作,以响应企业的各种业务需求。比如,通过编写SQL语句查询BKPF表来获取特定日期范围内的会计凭证信息;或者修改EKBZ表中某些字段的值来调整库存...
在VB(Visual Basic)编程环境中,DELETE语句是用于从数据库中的数据表中删除特定记录的一种方法。在处理数据操作时,了解如何有效地使用DELETE语句对于任何数据库应用程序的开发都至关重要。这篇教程将深入探讨如何...