SQl函数的写法
USE [ChangHong_612]
GO
/****** Object: UserDefinedFunction [dbo].[FN_GetProdQty] Script Date: 10/08/2015 14:05:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***********************************************
-- Author: lxf
-- Create date: 2012-12-08 10:25:00
-- Description: 求产品数
-- Module: Public
select dbo.FN_GetProdQty('2013112007','20131120070002','(CKZ1110-002)','P01',1.01,'2013-09-13 00:00','2013-09-13 23:59')
***********************************************/
ALTER FUNCTION [dbo].[FN_GetProdQty]
(
@MO varchar(20),
@DispatchNO varchar(50),
@ItemNO varchar(20),
@ProcCode varchar(20) = '',
@DispatchPrior float ,
@StartDate varchar(20),
@EndDate varchar(20)
)
RETURNS int
AS
BEGIN
DECLARE @OpenMouldNum int, --开模数
@StockNum int,
@RETURN int,
@charType char(1) --机器类型,1表示注塑机,2表示植毛机
set @OpenMouldNum= 0
select @charType=isnull(m.MachineClsId,'1')
from V_DispatchOrder d
join mes_machine m on d.MachineNO=m.MachineNO
where MO = @MO
and DispatchNO = @DispatchNO
and (@DispatchPrior = 0 or DispatchPrior = @DispatchPrior)
and ItemNo = @ItemNO
and (@ProcCode = '' or ProcCode = @ProcCode)
--结束时间大于当前时间,自动截断
if(@EndDate <> '')
begin
if(getdate()<convert(datetime,@EndDate))
begin
set @EndDate = convert(varchar(19),getdate(),121)
end
end
select @OpenMouldNum = dbo.FN_GetProdMoNum(@MO, @DispatchNO, @DispatchPrior, @StartDate, @EndDate, @ProcCode)
IF (@charType = '1')
BEGIN
SELECT @RETURN=@OpenMouldNum * isnull(do.SocketNum,0) --注塑机的数量等于开模数*模穴数
FROM V_DispatchOrder DO
WHERE DO.MO = @MO and DO.DispatchNO = @DispatchNO
and (@ProcCode = '' or ProcCode = @ProcCode)
and (@DispatchPrior = 0 or DispatchPrior = @DispatchPrior)
and DO.ItemNO = @ItemNO
END
ELSE IF (@charType = '2')
BEGIN
SELECT @RETURN=isnull(CAST(PM.FieldValue as int),0)*isnull(cast(PP.FieldValue as int),0)*@OpenMouldNum
FROM V_DispatchOrder DO
left JOIN dbo.MES_MachineExt PM ON DO.MachineNo = PM.MachineNo
left JOIN dbo.MES_ItemExt PP ON DO.ItemNO = PP.ItemNO
WHERE DO.MO = @MO and DO.DispatchNO =@DispatchNO
and (@ProcCode = '' or ProcCode = @ProcCode)
and (@DispatchPrior = 0 or DispatchPrior = @DispatchPrior)
and DO.ItemNO= @ItemNO
and PM.FieldName='GroupNum' and PP.FieldName='OutNum'
END
Else
BEGIN
SELECT @RETURN = @OpenMouldNum
END
if @RETURN is null set @RETURN=0
if @RETURN<=0 set @RETURN=0
RETURN @RETURN
END
------------------------------------------
USE [ChangHong_612]
GO
/****** Object: UserDefinedFunction [dbo].[FN_GetAdjustMachineQty] Script Date: 10/08/2015 14:50:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***********************************************
--Author: lxf
--Create date:2012.12.14
--select dbo.FN_GetAdjustMachineQty('2014082203','20140822030001','1201154',1.01,'','','','P01')
--Description:取得调机时的产品数。
***********************************************/
ALTER function [dbo].[FN_GetAdjustMachineQty]
(
@MO varchar(100),
@DispatchNO varchar(100),
@ItemNO varchar(50),
@DispatchPrior float,
@BeginDate varchar(20),
@EndDate varchar(20),
@ClassType varchar(20) = '',
@ProcCode varchar(20) = ''
)
returns int
as
begin
declare @GoodQty int,@BadQty int
set @GoodQty=0
set @BadQty=0
if @BeginDate=''
set @BeginDate='1900-01-01 00:00:00'
if @EndDate=''
set @EndDate=GETDATE()
select @GoodQty = sum(isnull(GoodQty,0))
from(
select DispatchNo, ItemNO, GoodQty,
(select name from
(select Name,BeginTime,
case
when BeginTime>EndTime then Cast(CAST(SUBSTRING(endtime,1,2) as int)+24 as varchar)+':00'
else EndTime end
EndTime
from MES_BCDetail
)
b
where BeginTime<convert(char(5),a.StartDate,108) and EndTime >convert(char(5),a.StartDate,108)
)
as ClassType
from MES_AdjustMachine a
where DispatchNO = @DispatchNO and ItemNO = @ItemNO
and (@DispatchPrior = 0 or DispatchPrior = @DispatchPrior)
and (@ProcCode = '' or ProcCode = @ProcCode)
and (StartDate IS NOT NULL AND EndDate IS NOT NULL)
and (EndDate>=@BeginDate AND StartDate<=@EndDate)
) a
where @ClassType = '' or ClassType = @ClassType
select @BadQty = sum(isnull(BadQty,0))
from(
select DispatchNo, ItemNO, BadQty,
(select name from (select Name,BeginTime,case when BeginTime>EndTime then Cast(CAST(SUBSTRING(endtime,1,2) as int)+24 as varchar)+':00'
else EndTime end EndTime from MES_BCDetail ) b where BeginTime<convert(char(5),a.QcDate,108) and EndTime >convert(char(5),a.QcDate,108)) as ClassType
from MES_Qc a
where qctype in(44,36,25,26,24,47) and DispatchNO = @DispatchNO and ItemNO = @ItemNO
and (@DispatchPrior = 0 or DispatchPrior = @DispatchPrior)
and (@ProcCode = '' or ProcCode = @ProcCode)
and (QCDate>=@BeginDate AND QCDate<=@EndDate)
) a
where @ClassType = '' or ClassType = @ClassType
return isnull(@GoodQty,0)+isnull(@BadQty,0)
end
SQl函数的写法的更多相关文章
- Sql函数的三种写法
以前复制的创建sql函数比较乱,现在将我自己项目中的三种sql函数做下对比,一目了然: (1)表值函数——方法一:直接创建临时表,并返回临时表.优点:函数体中间可以直接申明临时变量,并做各种逻辑处理, ...
- oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数
花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...
- Sql函数笔记一、case when
Case具有两种格式.简单Case函数和Case搜索函数. 简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数
花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用oracle用 ...
- Oracle 中的sql函数以及分页
SELECT LPAD(,'*.') "LPAD example" FROM DUAL; 1.分页查询 (1)方法一:使用 between and 来实现分页 select * ...
- SQL函数说明大全
一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描 ...
- [转]字符型IP地址转换成数字IP的SQL函数
使用SQL函数可以实现许多的功能,下面为您介绍的是字符型IP地址转换成数字IP的SQL函数示例,供您参考,希望对您学习SQL函数能够有所帮助. /**//*--调用示例 sele ...
- 常用的Sql 函数
常用的Sql 函数 1: replace 函数,替换字符. 语法 replace (original-string, search-string, replace-string ) 第一个参数你的字符 ...
- (转)Javascript匿名函数的写法、传参、递归
(原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 javascript匿名函数的写法.传参和递归 http: ...
随机推荐
- BZOJ2337: [HNOI2011]XOR和路径
题解: 异或操作是每一位独立的,所以我们可以考虑每一位分开做. 假设当前正在处理第k位 那令f[i]表示从i到n 为1的概率.因为不是有向无环图(绿豆蛙的归宿),所以我们要用到高斯消元. 若有边i-& ...
- Asp.net 后台添加Meta标签方法
Asp.net 后台添加Meta标签方法包括keywords,CSS.JS 下面是从Asp.net 后台添加CSS.JS.Meta标签的写法,我们这里写成函数方便以后使用.如果函数放在页面类中, Pa ...
- 省常中模拟 Test3 Day1
tile 贪心 题意:给出一个矩形,用不同字母代表的正方形填充,要求相邻的方块字母不能相同,求字典序(将所有行拼接起来)最小的方案. 初步解法:一开始没怎么想,以为策略是每次填充一个尽量大的正方形.但 ...
- 使用solrj操作solr索引库
(solrj)初次使用solr的开发人员总是很郁闷,不知道如何去操作solr索引库,以为只能用<五分钟solr4.5教程(搭建.运行)>中讲到的用xml文件的形式提交数据到索引库,其实没有 ...
- AFNetworking 2.0 来了
转:http://yangfei.me/blog/afnetworking-2-came/ 前几天 Mattt 发布了 AFNetworking 2.0,我的一个最大感慨就是,他怎么那么高产? 关于 ...
- [android]如何让TextView使用超链接
找了很多网址,最后是这个有说到. 总的做法是: 1.(当然也可以从Res中获取.) tv.setText(Html.fromHtml("<a href=\"http://ww ...
- Java进程占用CPU资源过多分析
问题描述: 生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析: 1,程序属于CPU密集型,和开发沟通 ...
- 常见设计模式的解析和实现(C++)之九—Decorator模式
作用:动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活. UML结构图: 抽象基类: 1) Component :定义一个对象接口,可以为这个接口动态地 ...
- 将矩阵转化为LibSvm需要的格式
function svmtransform(A)[m,n]=size(A); fid = fopen('A.txt','w');%写入文件路径for i=1:m temp1 = A(i,2:n) ...
- [Hive - Tutorial] Type System 数据类型
数据类型Type System Hive supports primitive and complex data types, as described below. See Hive Data Ty ...