______________________________________________________________________________________
名称 | 日期 | 之前量 | 入库 | 出库 | 当前量 | 单位 |
--------------------------------------------------------------------------------------
电脑 |2009-8-01 | 100 | 1 | 5 | 96 | 台 |
--------------------------------------------------------------------------------------
电脑 |2009-8-02 | 100 | 0 | 1 | 99 | 台 |
--------------------------------------------------------------------------------------
电脑 |2009-8-03 | 100 | 10 | 0 | 110 | 台 |
______________________________________________________________________________________
字段为:
pc_name date_chr liang_zq rk ck liang_mq danw
现在要求:每行的"之前量"=上一天的"当前量"; 当天的"当前量"="之前量"+入库-出库 (上面8-1号的"之前量"为起始量)
问下各位,这个SQL语句该怎么写?
http://topic.csdn.net/u/20090902/18/334bc901-2fa8-483f-87fe-b424f750031f.html?38688
--> 生成测试数据: @tb
DECLARE @tb TABLE (名称 VARCHAR(4),日期 DATETIME,之前量 INT,入库 INT,出库 INT,当前量 INT,单位 VARCHAR(2))
INSERT INTO @tb
SELECT '电脑','2009-8-01',100,1,5,96,'台' UNION ALL
SELECT '电脑','2009-8-02',100,0,1,99,'台' UNION ALL
SELECT '电脑','2009-8-03',100,10,0,110,'台' UNION ALL
SELECT 'CPU','2009-8-01',900,1,5,96,'台' UNION ALL
SELECT 'CPU','2009-8-02',100,20,1,99,'台' UNION ALL
SELECT 'CPU','2009-8-03',100,10,50,110,'台'
--SQL查询如下:
declare @pre_value int,@cur_value int;
declare @name varchar(20);
update @tb set
@pre_value = case when @name = 名称 then @cur_value else 之前量 end,
@cur_value = isnull(@pre_value,0) + 入库-出库,
之前量 = @pre_value,
当前量 = @cur_value,
@name = 名称;
SELECT * FROM @tb;
/*
名称 日期 之前量 入库 出库 当前量 单位
---- ----------------------- ----------- ----------- ----------- ----------- ----
电脑 2009-08-01 00:00:00.000 100 1 5 96 台
电脑 2009-08-02 00:00:00.000 96 0 1 95 台
电脑 2009-08-03 00:00:00.000 95 10 0 105 台
CPU 2009-08-01 00:00:00.000 900 1 5 896 台
CPU 2009-08-02 00:00:00.000 896 20 1 915 台
CPU 2009-08-03 00:00:00.000 915 10 50 875 台
(6 row(s) affected)
*/
-------------------------------------------------------------------------
--> 生成测试数据表:tb
If not object_id('[tb]') is null
Drop table [tb]
Go
Create table [tb](pc_name nvarchar(3),date_chr Datetime,liang_zq int,rk int,ck int,liang_mq int,danw nvarchar(1))
Insert [tb]
Select N'电脑','2009-8-01',100,1,5,96,N'台' union all
Select N'电脑','2009-8-02',100,0,1,99,N'台' union all
Select N'电脑','2009-8-03',100,10,0,110,N'台' union all
SELECT 'CPU','2009-8-01',900,1,5,96,'台' UNION ALL
SELECT 'CPU','2009-8-02',100,20,1,99,'台' UNION ALL
SELECT 'CPU','2009-8-03',100,10,50,110,'台'
Go
--Select * from [tb]
-->SQL查询如下:
update t set
liang_zq=(select SUM(rk-ck) from tb where pc_name=t.pc_name and date_chr<=t.date_chr)+(select top 1 liang_zq from tb where pc_name=t.pc_name order by date_chr) +ck-rk,
liang_mq=(select SUM(rk-ck) from tb where pc_name=t.pc_name and date_chr<=t.date_chr)+(select top 1 liang_zq from tb where pc_name=t.pc_name order by date_chr)
from tb t
select * from tb
/*
pc_name date_chr liang_zq rk ck liang_mq danw
------- ----------------------- ----------- ----------- ----------- ----------- ----
电脑 2009-08-01 00:00:00.000 100 1 5 96 台
电脑 2009-08-02 00:00:00.000 96 0 1 95 台
电脑 2009-08-03 00:00:00.000 95 10 0 105 台
CPU 2009-08-01 00:00:00.000 900 1 5 896 台
CPU 2009-08-02 00:00:00.000 896 20 1 915 台
CPU 2009-08-03 00:00:00.000 915 10 50 875 台
(6 行受影响)
*/
分享到:
相关推荐
android APP更新实例。实现版本号对比,是否需要强制更新,稍后更新。更新后自动安装APP
c# datagrid更新实例
实现Android 增量更新的完整实例源代码
需求规格说明书实例汇总(多个实例需求规格说明书)%2C包括%3Aoa办公自动化系统需求规格说明书、进销存系统需求规格说明书、客户关系管理系统需求规格说明书、人力资源管理系统需求规格说明书、图书管管理系统需求规格...
ETL,根据时间戳进行增量更新,建立在源表没有时间戳字段的基础上
uml实例uml实例uml实例uml实例uml实例uml实例uml实例uml实例uml实例uml实例uml实例uml实例uml实例uml实例uml实例uml实例uml实例uml实例
excel自动汇总实例,通过宏实现多个工作表符合某条件的数据汇总到一个工作表的功能
计算机软件-商业源码-实例095-文本文件的逐行读取.zip
跨窗体更新-委托实例 跨窗体更新-委托实例 跨窗体更新-委托实例
ANSYS传热分析实例汇总.pdf
测试需求分析:UI、用户的输入校验、数据库表更新、系统提示信息 软件测试用例实例 功能描述:用户通过用户界面输入信息,然后提交,信息保存至数据库,客户端提示提交成功。测试需求分析:UI、用户的输入校验、...
微信小程序 实例汇总 完整项目源代码 微信小程序 实例汇总 完整项目源代码 微信小程序 实例汇总 完整项目源代码 微信小程序 实例汇总 完整项目源代码
vba实例vba实例vba实例vba实例vba实例vba实例vba实例vba实例vba实例vba实例
主要介绍了VBS和bat批处理逐行读取文件实例,分别列出了2bat批处理版和2个VBS版,需要的朋友可以参考下
104-DS1302时钟串口自动更新时间(51单片机C语言实例Proteus仿真和代码)104-DS1302时钟串口自动更新时间(51单片机C语言实例Proteus仿真和代码)104-DS1302时钟串口自动更新时间(51单片机C语言实例Proteus仿真和代码)...
j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例
实例117 如何更新SQL Server数据库 实例118 如何读写XML文件 实例119 如何读取EXCEL文件 实例120 如何取得聚合函数返回值 实例121 如何直接操作主从关系表 实例122 如何以Web方式查询Access数据库 实例123 如何使用...
更新数据透视表的数据.xlsx源码EXCEL VBA宏编程xlsx实例代码下载更新数据透视表的数据.xlsx源码EXCEL VBA宏编程xlsx实例代码下载更新数据透视表的数据.xlsx源码EXCEL VBA宏编程xlsx实例代码下载更新数据透视表的数据...
c# 程序更新,包含说明和使用方式,包含源码