--> 测试数据:[m]
if object_id('[m]') is not null drop table [m]
go
Create table m ( ID int not NULL , mCount int not NULL ,mTime datetime not null)
INSERT into m(ID,mCount,mTime)
SELECT 1,50,'2014-02-01' UNION ALL
SELECT 1,60,'2014-02-02' UNION ALL
SELECT 2,50,'2014-02-01' UNION ALL
SELECT 2,60,'2014-02-03' UNION ALL
SELECT 2,60,'2014-02-04' UNION ALL
SELECT 2,40,'2014-02-02' UNION ALL
SELECT 1,70,'2014-02-03' UNION ALL
SELECT 1,80,'2014-02-04' select * from m
/*
ID          mCount      mTime
----------- ----------- -----------------------
1           50          2014-02-01 00:00:00.000
1           60          2014-02-02 00:00:00.000
2           50          2014-02-01 00:00:00.000
2           60          2014-02-03 00:00:00.000
2           60          2014-02-04 00:00:00.000
2           40          2014-02-02 00:00:00.000
1           70          2014-02-03 00:00:00.000
1           80          2014-02-04 00:00:00.000(8 行受影响)*/declare @i int
set @i =80  --定义出货总数量
select a.id,a.mcount ,a.mtime,
case when a.mcount-(a.tmcount-@i) <0 then 0  when a.tmcount<@i then a.mcount else a.mcount-(a.tmcount-@i)end as '出货数量'
from
(
select a.*,sum(isnull(b.mcount,0)) as Tmcount from m a left join m b on a.mtime>=b.mtime and a.id=b.id
group by a.id,a.mcount,a.mtime
)a
/*
id          mcount      mtime                   出货数量
----------- ----------- ----------------------- -----------
1           50          2014-02-01 00:00:00.000 50
1           60          2014-02-02 00:00:00.000 30
1           70          2014-02-03 00:00:00.000 0
1           80          2014-02-04 00:00:00.000 0
2           40          2014-02-02 00:00:00.000 30
2           50          2014-02-01 00:00:00.000 50
2           60          2014-02-03 00:00:00.000 0
2           60          2014-02-04 00:00:00.000 0(8 行受影响)*/

一般来说,在实际业务中不可能所有的种类都是出库80;这里仅做一个例子,来看看多个种类的效果。

在很多业务中,每种物品出库的数量是不一样的,所以在先进先出的时候需要循环每个物品。

ps.本例没取用同一天进货两次的情况;如果一天进货两次,需要先进行按天按品种进行汇总后再出库。(有的货物不看进货日期,而是看有效期、或者批号、批次;所以分组条件也需要跟着更新。eg.药品,可能今天进的是1号生产的,而昨天进的是3号生产的;在出库时,需要先出今天进的1号生产的。)

先进先出SQL Server 语句相关推荐

  1. SQL Server 语句查询手册

    建表: CREATE TABLE  [DB.dbo].tableName (Stud_id int CONSTRAINT  constraintName1  not null primary key, ...

  2. 如何通过SQL Server语句查询三个月内的信息代码的教程方法

    如何通过SQL Server语句查询三个月内的信息代码的教程方法 作者:张国军_Suger 开发工具与关键技术:SQL Server 2014.SQL.SQL关键字         由于需求需要我们达 ...

  3. SQL server 语句运行很快,放到代码编译器中就很慢

    问题描述: SQL server 语句在navicate 中运行不到一秒,但是运行这个SQL语句的接口就需要十几秒,几十秒,严重影响用户使用. 解决思路: SQL语句是没有问题的,因为在navicat ...

  4. SQL Server语句创建表

    今天介绍一下如何使用SQL Server语句创建表并添加数据 首先先了解一下表的模式,在数据库中根据模式进行分组避免表名称的冲突 在SQL Server 2014中直接新建表是默认的前缀dbo 而命名 ...

  5. sql server 语句自动补齐

    sql2008 sql语句自动补齐功能 sql2008的命令自动补齐功能在哪设置 包括查询的表明自动补齐 不想用插件 这个好像2008自带的有这个功能 难道我装的版本不对 楼主说的是自动联想功能吧,任 ...

  6. SQL Server语句大全(增删改查数据、创建表、删除表、修改表)

    SQL server 增删改查语句 新增 insert into test.dbo.users (id,username,password) values(1,'lisi',123),(2,'lisi ...

  7. SQL Server语句

    SQL简介: 结构化查询语言,全拼 Structured Query Language 主要用于对数据库的操作,大多数据库遵循sql原则 SQL server使用的是sql的扩展集T-SQL 全拼 T ...

  8. 经典SQL Server语句大全(超详细)

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...

  9. sql server 语句查询、函数

    -- 使用 select语句进行查询<按查询的列名显示,有条件限制就只显示条件部分> 语法: select 列名 from 表名 [where 查询的条件表达式] [order by 列名 ...

最新文章

  1. android progressbar icon,android中ProgressDialog与ProgressBar的使用详解
  2. Java生鲜电商平台-促销系统的架构设计与源码解析
  3. pythongui显示图片_opencv2.4.13+python2.7学习笔记--opencv中的Gui特性--图片:读图像,显示图像,保存图像...
  4. 外媒:台积电准备明年下半年采用3nm工艺为苹果生产芯片
  5. android 底部弹窗失效,Android实现从底部弹出Dialog(和PopWindow实现的效果同样)
  6. 如何在VScode 中 调试 ts 文件 Unit test
  7. Angular:带* ngClass的条件类
  8. STL标准模版库----queue/deque操作大全
  9. 几种常见的基于Lucene的开源搜索解决方案对比
  10. wince 错误 Error: failed PB timebomb check
  11. BZOJ1085:[SCOI2005]骑士精神——题解+IDA*粗略讲解
  12. MD4哈希算法原理及实现(附源码)
  13. jq-ui的Sortable插件 两列布局 左右拖拽
  14. linux内存的优化大师,Linux性能优化大师(调整操作系统参数)
  15. python模拟布朗运动_如何用Python 实现 几何布朗运动
  16. 打字测试软件 tt,打字测试(TT)
  17. element-ui按需引入报错 Error: Cannot find module ‘babel-preset-es2015‘
  18. android 强制卸载app,怎么强制删除安卓手机自带软件(三招就能卸载干净)
  19. 光遇服务器修复暴风眼刷新了吗,光遇暴风眼怎么进 光遇暴风眼刷新时间
  20. RGB及sRGB与XYZ坐标转换

热门文章

  1. R软件--GEO数据分析教程:差异性分析、富集分析(GO\KEGG\DO)
  2. 两组回归系数差异检验_如何检验两个回归系数的差异性?我做调节分析。
  3. 密码学——Schnorr签名算法
  4. MySQL学习笔记(1)——高可用组复制
  5. 冯扬文:船用燃料油价格大涨对我省航运企业的影响
  6. 前端解放生产力之–动画(Adobe Effects + bodymovin + lottie)
  7. 一个学习FreeBSD不错的中文网站
  8. Centos-7使用的性能监控工具
  9. unity 学习笔记(改变物体旋转中心)
  10. StatsD 五种类型数据发送形式拟测试