• sql多条件查询procedure


    create   proc pr_test
    @IN_STORE_CODE varchar(
    11),
    @in_date_start varchar(
    8),
    @in_date_end varchar(
    8),
    @state_flag 
    char(1),
    @WH_CODE varchar(
    3),
    @RECIPT_NO 
    char(11),
    @SUP_NAME varchar(
    60),
    @MATERIAL_CODE varchar(
    12),
    @M_NAME varchar(
    30)
    as
    declare @sql varchar(
    1000)
    declare @sqlwhere varchar(
    1000)
    set @sql='SELECT distinct b.IN_STORE_CODE,f.ZB_NAME,'
    set @sql=@sql+'IN_DATE=left(b.in_date,4)+''-''+substring(b.in_date,5,2)+''-''+right(b.in_date,2),'
    set @sql=@sql+'b.RECIPT_NO,b.CG_ORDER_MANAGER_NUM,g.wh_name,'
    set @sql=@sql+'in_kind = case in_kind when ''1'' then '''' else  '''' end,'
    set @sql=@sql+'h.[NAME],c.MATERIAL_CODE,d.M_NAME,d.MODEL,d.UNIT,c.PRAV_IN_QUAN,c.PRICE_PRV,c.MONEY_PR,e.SUP_NAME,b.STATE_FLAG,'
    set @sql=@sql+'b.TRAN_TYPE,b.TRAN_COMP_CODE,BUY_PERSON_CODE=i.fullname,b.REMARK  '
    set @sql=@sql+'FROM GS_RECIPT_MAIN a RIGHT JOIN GF_IN_MAIN b ON a.RECIPT_NO = b.RECIPT_NO '
    set @sql=@sql+'left outer join gs_sy_jyxz f ON b.IN_TYPE=F.ZB_CODE '
    set @sql=@sql+'left outer join gf_warehouse  g ON b.WH_CODE=g.WH_CODE '
    set @sql=@sql+'left outer join (select code,[name] from BO_SY_CODE WHERE CODE_TYPE=''21'') h ON b.DEPT_CODE=h.code '
    set @sql=@sql+'left outer join users i ON b.BUY_PERSON_CODE=i.userid '
    set @sql=@sql+'INNER JOIN GF_IN_SUB c ON b.IN_STORE_CODE = c.IN_STORE_CODE '
    set @sql=@sql+'left outer join GS_MATE d ON c.MATERIAL_CODE = d.MATERIAL_CODE '
    set @sql=@sql+'left outer join GS_SUPPLIER e ON e.SUP_CODE=b.SUP_CODE  '

    if @in_store_code<>''
    begin 
      
    set @sqlwhere='where b.in_store_code='+''''+@in_store_code+''''
    end

    if @in_date_start<>''
    begin 
      
    if @sqlwhere<>''
         
    set @sqlwhere=@sqlwhere+' and in_date>='+''''+@in_date_start+''''
      
    else
         
    set @sqlwhere='where in_date>='+''''+@in_date_start+''''
    end 

    if @in_date_end<>''
    begin 
      
    if @sqlwhere<>''
         
    set @sqlwhere=@sqlwhere+' and in_date<='+''''+@in_date_end+''''
      
    else
         
    set @sqlwhere='where in_date<='+''''+@in_date_end+''''
    end 

    if @state_flag<>''
    begin 
      
    if @sqlwhere<>''
         
    set @sqlwhere=@sqlwhere+' and state_flag='+''''+@state_flag+''''
      
    else
         
    set @sqlwhere='where state_flag='+''''+@state_flag+''''
    end 

    if @WH_CODE<>''
    begin 
      
    if @sqlwhere<>''
         
    set @sqlwhere=@sqlwhere+' and b.WH_CODE='+''''+@WH_CODE+''''
      
    else
         
    set @sqlwhere='where b.WH_CODE='+''''+@WH_CODE+''''
    end 

    if @RECIPT_NO<>''
    begin 
      
    if @sqlwhere<>''
         
    set @sqlwhere=@sqlwhere+' and b.RECIPT_NO='+''''+@RECIPT_NO+''''
      
    else
         
    set @sqlwhere='where b.RECIPT_NO='+''''+@RECIPT_NO+''''
    end 

    if @SUP_NAME<>''
    begin 
      
    if @sqlwhere<>''
         
    set @sqlwhere=@sqlwhere+' and e.SUP_NAME like ''%'+@SUP_NAME+'%'''
      
    else
         
    set @sqlwhere='where e.SUP_NAME like ''%'+@SUP_NAME+'%'''
    end 

    if @MATERIAL_CODE<>''
    begin 
      
    if @sqlwhere<>''
         
    set @sqlwhere=@sqlwhere+' and c.MATERIAL_CODE='+''''+@MATERIAL_CODE+''''
      
    else
         
    set @sqlwhere='where c.MATERIAL_CODE='+''''+@MATERIAL_CODE+''''
    end 

    if @M_NAME<>''
    begin 
      
    if @sqlwhere<>''
         
    set @sqlwhere=@sqlwhere+' and d.M_NAME like ''%'+@M_NAME+'%'''
      
    else
         
    set @sqlwhere='where d.M_NAME like ''%'+@M_NAME+'%'''
    end

    set @sql=@sql+@sqlwhere
    exec (@sql)
  • 相关阅读:
    mysql主从复制配置
    es去重 获取重复数据后保留最小值ID后进行批量删除
    java springboot mybatis控制台打印sql方法
    python生成requirements.txt
    hadoop基本介绍
    docker容器操作
    Exception caught evaluating condition: [java.lang.RuntimeException: Error creating extended parser class: null], action = [Fail the build]
    Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases. -> [Help 1]
    zabbix自定义监控postgresql死亡元组,shell脚本比较小数位,shell脚本统计时间精确毫秒
    记一次postgresql的归档日志爆仓磁盘处理
  • 原文地址:https://www.cnblogs.com/perfect/p/1207461.html
Copyright © 2020-2023  润新知