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: ...
随机推荐
- Java I/O 扩展
Java I/O 扩展 标签: Java基础 NIO Java 的NIO(新IO)和传统的IO有着相同的目的: 输入 输出 .但是NIO使用了不同的方式来处理IO,NIO利用内存映射文件(此处文件的含 ...
- 【转】 Java 多线程之一
转自 Java 多线程 并发编程 一.多线程 1.操作系统有两个容易混淆的概念,进程和线程. 进程:一个计算机程序的运行实例,包含了需要执行的指令:有自己的独立地址空间,包含程序内容和数据:不同进 ...
- 原创: 做一款属于自己风格的音乐播放器 (HTML5的Audio新特性)
灵感的由来是前些天看到了博: http://www.cnblogs.com/li-cheng 的首页有一个很漂亮的播放器,感觉很不错,是用Flex做的Flash播放器. 于是我也便想到了,自己也来来弄 ...
- Python中文乱码的处理
为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成“\xe4\xb8\xad\xe6\x96\x87”的形式? 为什么会报错“UnicodeEncodeError: 'asc ...
- [Papers]NSE, $\p_3u$, Lebesgue space [Kukavica-Ziane, JMP, 2007]
$$\bex \p_3\bbu\in L^p(0,T;L^q(\bbR^3)),\quad \frac{2}{p}+\frac{3}{q}=2,\quad \frac{9}{4}\leq q\leq ...
- POJ2976 Dropping tests 01分数规划
裸题 看分析请戳这里:http://blog.csdn.net/hhaile/article/details/8883652 #include<stdio.h> #include<a ...
- HDU 4539 郑厂长系列故事——排兵布阵
http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Others) ...
- CCMoveTo 等函数理解
CCMoveTo: 使用CCMoveTo action来让对象从右侧屏幕外移动到屏幕左侧.注意可以通过指定duration参数控制这一过程需要多久,这里我们随机给他2-4秒的时间. CCCallFun ...
- PHP 获取文件权限函数
/* * substr 返回字符串的子串 * base_convert 在任意进制之间转换数字 * fileperms 取得文件的权限 */ // 获取权限 function getChmod($fi ...
- 帮同事写了几行代码,在 安装/卸载 程序里 注册/卸载 OCX控件
写了个小控制台程序,这个程序用来注册 / 卸载OCX控件,用在Inno Setup做的安装卸载程序里. #include "stdafx.h" #include <windo ...