先进先出SQL Server 语句
--> 测试数据:[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 语句相关推荐
- SQL Server 语句查询手册
建表: CREATE TABLE [DB.dbo].tableName (Stud_id int CONSTRAINT constraintName1 not null primary key, ...
- 如何通过SQL Server语句查询三个月内的信息代码的教程方法
如何通过SQL Server语句查询三个月内的信息代码的教程方法 作者:张国军_Suger 开发工具与关键技术:SQL Server 2014.SQL.SQL关键字 由于需求需要我们达 ...
- SQL server 语句运行很快,放到代码编译器中就很慢
问题描述: SQL server 语句在navicate 中运行不到一秒,但是运行这个SQL语句的接口就需要十几秒,几十秒,严重影响用户使用. 解决思路: SQL语句是没有问题的,因为在navicat ...
- SQL Server语句创建表
今天介绍一下如何使用SQL Server语句创建表并添加数据 首先先了解一下表的模式,在数据库中根据模式进行分组避免表名称的冲突 在SQL Server 2014中直接新建表是默认的前缀dbo 而命名 ...
- sql server 语句自动补齐
sql2008 sql语句自动补齐功能 sql2008的命令自动补齐功能在哪设置 包括查询的表明自动补齐 不想用插件 这个好像2008自带的有这个功能 难道我装的版本不对 楼主说的是自动联想功能吧,任 ...
- SQL Server语句大全(增删改查数据、创建表、删除表、修改表)
SQL server 增删改查语句 新增 insert into test.dbo.users (id,username,password) values(1,'lisi',123),(2,'lisi ...
- SQL Server语句
SQL简介: 结构化查询语言,全拼 Structured Query Language 主要用于对数据库的操作,大多数据库遵循sql原则 SQL server使用的是sql的扩展集T-SQL 全拼 T ...
- 经典SQL Server语句大全(超详细)
一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...
- sql server 语句查询、函数
-- 使用 select语句进行查询<按查询的列名显示,有条件限制就只显示条件部分> 语法: select 列名 from 表名 [where 查询的条件表达式] [order by 列名 ...
最新文章
- android progressbar icon,android中ProgressDialog与ProgressBar的使用详解
- Java生鲜电商平台-促销系统的架构设计与源码解析
- pythongui显示图片_opencv2.4.13+python2.7学习笔记--opencv中的Gui特性--图片:读图像,显示图像,保存图像...
- 外媒:台积电准备明年下半年采用3nm工艺为苹果生产芯片
- android 底部弹窗失效,Android实现从底部弹出Dialog(和PopWindow实现的效果同样)
- 如何在VScode 中 调试 ts 文件 Unit test
- Angular:带* ngClass的条件类
- STL标准模版库----queue/deque操作大全
- 几种常见的基于Lucene的开源搜索解决方案对比
- wince 错误 Error: failed PB timebomb check
- BZOJ1085:[SCOI2005]骑士精神——题解+IDA*粗略讲解
- MD4哈希算法原理及实现(附源码)
- jq-ui的Sortable插件 两列布局 左右拖拽
- linux内存的优化大师,Linux性能优化大师(调整操作系统参数)
- python模拟布朗运动_如何用Python 实现 几何布朗运动
- 打字测试软件 tt,打字测试(TT)
- element-ui按需引入报错 Error: Cannot find module ‘babel-preset-es2015‘
- android 强制卸载app,怎么强制删除安卓手机自带软件(三招就能卸载干净)
- 光遇服务器修复暴风眼刷新了吗,光遇暴风眼怎么进 光遇暴风眼刷新时间
- RGB及sRGB与XYZ坐标转换