有多组数据,分别是收入,支出,余额,它们的关系是:
本期余额=上次余额+收入-支出

/*
测试数据:
Create Table tbl([日期] smalldatetime,[收入] int ,[支出] int) Insert Into tbl
SELECT '2004-02-11', 60, 45
union SELECT '2004-10-01',60, 45
union SELECT '2004-10-02',40, 50
union SELECT '2004-10-15',50, 40
union SELECT '2004-10-16',10, null
union SELECT '2004-10-19',10, 0
union SELECT '2004-10-30',0, 10
*/
--select *,(select sum(收入-支出) from 表 where 你的表的主键<=tem.你的表的主键) 本次余额 from 表 tem 

select t.日期,t.收入,t.支出,(select sum(ISNULL(收入, ))-sum(ISNULL(支出, )) from tbl where 日期 <= t.日期) as 本期余额
from tbl t order by 日期 desc

SQL:实现流水账的收入、支出、本期余额的更多相关文章

  1. 【SQL】 收入支出求盈亏

    求项目ID为1000的盈亏 表名为:T 字段:ID    P_ID   AMOUNT   TYPE(1:收入 2:支出) '

  2. [SQL]LeetCode181. 超过经理收入的员工 | Employees Earning More Than Their Managers

    SQL架构 Create table If Not Exists Employee (Id ), Salary int, ManagerId int) Truncate table Employee ...

  3. sql 181. 超过经理收入的员工

    Employee 表包含所有员工,他们的经理也属于员工.每个员工都有一个 Id,此外还有一列对应员工的经理的 Id. +----+-------+--------+-----------+| Id | ...

  4. sql基本命令

    --------------------------------------------------------SQL基本命令开始----------------------------------- ...

  5. FFMS SQL文件执行错误

    [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 b ...

  6. MicroERP数据初始化SQL脚本

    --use MicroERP insert into tbUserGroup(GroupName,Remark) values('管理员组','具备所有权限')insert into tbUser(L ...

  7. Sql面试常考题(持续添加)

    最近萌生换工作的念头,于是上网下载了一些公司的面试题,重新看了面试题中的Sql部分,这些查询题有时候只是兜一个弯角来考,对于给EF惯坏的孩子来说还是有点难度的(给面试官鄙视了几下的结果),所以列出最近 ...

  8. SQL查询基本用法

    -- 单列查询 select 编号 from employees -- 多列查询 select 编号,姓名 from employees -- 查询所有列 select * from employee ...

  9. echarts3.0 本期累计堆叠

    @{ ViewBag.Title = "barlj"; } <h2>barlj</h2> <div id="main" style ...

随机推荐

  1. eclipse中如何打jar包

    在eclipse中写个小测试程序(需要用到第三方jar文件),打成jar文件,然后到linux下执行做测试,查了很多资料也没有说怎么把第三方jar打入jar,使用ant,又太麻烦. 1   选择Mai ...

  2. 盒模型与在低版本IE下的区别

    对css有一定了解的同学一定听说过盒模型,在这里以我自己的一点儿了解和认知来解释一下盒模型与盒模型在低版本IE浏览器下与其他浏览器下的区别. W3c标准下的盒模型 盒模型由 content(内容),p ...

  3. Java—从文件中读取数据

    1.FileInputStream() // 构建字节输入流对象,参数为文件名 FileInputStream fin = new FileInputStream("message" ...

  4. KinerCode.js

    1 /*验证码*/ function KinerCode(options) { this.opt = this.extend(true, this.options, options); this.op ...

  5. Node黑客开发的10个好习惯(2016)

    在2015年底之际,javascript开发者已经掌握了大量的工具.最后一次我们调查的时候,现代化的JS蓝图才刚刚出现.今天,我们很容易在JS的庞大生态系统中迷失,而成功的团队大部分时间都遵守着JS开 ...

  6. ThinkPHP 自动验证相关注意

    1.假如加入了表单令牌的话,表单的各种名与对应Model字段一致,不然报坑爹的令牌错误. 2.假如加入了表单令牌的话,Create只能采用默认的POST数据创建数据对象,不然又是坑爹的令牌错误. 3. ...

  7. Android 学习第18课,单元测试

    1. 准备一个待测试的类 package com.example.Service; public class PersonService { public void save(String userN ...

  8. Sunny-Code Beta版总结会议

    时间:2015-6-12 地点:基教601 参会人员:Sunny-Code全体成员 设想和目标 我们的软件要解决什么问题?是否定义得很清楚? 我们打算做一款集成小蝴蝶功能.Ip快速修改功能.WiFi共 ...

  9. Mongodb在Linux下安装及配置

    1.下载mongodb的linux版本(注意32位和64位的区别),下载地址:http://www.mongodb.org/downloads 2.将下载的mongodb安装文件mongodb-lin ...

  10. 解决Android应用安装快完毕时提示签名冲突

    最近开发了一个Android手机应用,自己用Eclipse调试安装没问题,使用其他人调试生成的bin下的apk就会出现问题,安装到最后提示"安装签名冲突"错误,想了一下估计是没有给 ...