• 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

  • 相关阅读:
    Django REST framework (DRF)框架入门之权限【五】
    Django REST framework (DRF)框架入门之视图【四】
    Django REST framework (DRF)框架入门之视图【三】
    restFul接口设计规范
    Django REST framework (DRF)框架入门之序列化---反序列化【二】
    Django REST framework (DRF)框架入门之序列化【一】
    Vue自动化工具(Vue-cli)基础3
    Vue.js 基础2
    Vue.js 基础1
    Django 下载功能中文文件名问题
  • 原文地址:https://www.cnblogs.com/chengjun/p/4867736.html
Copyright © 2020-2023  润新知