原函数:CREATE function getinfostrjd(@井号 varchar(20))
returns varchar(1000)
as
begin
declare @sql varchar(1000);set @sql=''
select @sql=@sql+ltrim(层位)+':'+ltrim(str(count(层位)))+'层,'
from LJAD03 where 井号=@井号 group by 井号, 层位
return @sql
end
现在想增加一个条件,就是井号中如果含有“A”字符串的话,在函数中的select语句后面加一个条件,即where 井号=@井号 and 类型='A1'如果包含“B”,则where 井号=@井号 and 类型='B1'
如果包含其他的,则where 井号=@井号 and 类型='X'函数中如何增加?

解决方案 »

  1.   

    where jh=@jh and 类型=case when charindex('B',jh)>0 then 'A1' when charindex('B',jh)>0 then 'B1' else 'X' end
      

  2.   

    CREATE function getinfostrjd(@井号 varchar(20))
    returns varchar(1000)
    as
    begin
    declare @sql varchar(1000);set @sql=''
    IF CHARINDEX('A',@井号)>0
    BEGIN
    select @sql=@sql+ltrim(层位)+':'+ltrim(str(count(层位)))+'层,'
    from LJAD03 where 井号=@井号 AND 类型='A1' group by 井号, 层位
    END
    ELSE IF...
    BEGIN
    .....
    END
    return @sqlend
      

  3.   


    CREATE function getinfostrjd(@井号 varchar(20))
    returns varchar(1000)
    as
    begin
    declare @sql varchar(1000);set @sql=''
    select @sql=@sql+ltrim(层位)+':'+ltrim(str(count(层位)))+'层,'
    from LJAD03 where 井号=@井号 and 类型=(case when charindex('A',@井号) > 0 then 'A1' when charindex('B',@井号)>0 then 'B1' else 'X' end)
    group by 井号, 层位
    return @sql
    end
      

  4.   

    CREATE function getinfostrjd(@井号 varchar(20))
    returns varchar(1000)
    as
    begin
    declare @sql varchar(1000);set @sql=''
    select @sql=@sql+ltrim(层位)+':'+ltrim(str(count(层位)))+'层,'
    from LJAD03 where 井号=@井号 
    and 类型=case when charindex('A',@井号)>0 then 'A1'
    when charindex('B',@井号)>0 then 'B1'
    else 'X' end group by 井号, 层位
    return @sql
    end
      

  5.   

    CREATE function getinfostrjd(@井号 varchar(20))
    returns varchar(1000)
    as
    begin
    declare @sql varchar(1000) ,@str varchar(5);
    set @sql=''
    if(charindex('A',@井号)>0) set @str='A1'
    if(charindex('B',@井号)>0) set @str='B1'
    else set @str='X'
    select @sql=@sql+ltrim(层位)+':'+ltrim(str(count(层位)))+'层,'
    from LJAD03 where 井号=@井号 and 类型=@str group by 井号, 层位
    return @sql
    end
      

  6.   

    引用 5 楼 zy112429 的回复:
    SQL codeCREATE function getinfostrjd(@井号 varchar(20))
    returns varchar(1000)
    as
    begin
    declare @sql varchar(1000) ,@str varchar(5);
    set @sql=''
    if(charindex('A',@井号)>0) set @str='A1'
    if(chari……膜拜 花花 
      

  7.   

    CREATE function getinfostrjd(@井号 varchar(20))
    returns varchar(1000)
    as
    begin
    declare @sql varchar(1000);set @sql=''
    select @sql=@sql+ltrim(层位)+':'+ltrim(str(count(层位)))+'层,'
    from LJAD03 where 井号=@井号 and 类型=(case when charindex('A',@井号) > 0 then 'A1' when charindex('B',@井号)>0 then 'B1' else 'X' end)
    group by 井号, 层位
    return @sql
    end
      

  8.   

    CREATE function getinfostrjd(@井号 varchar(20))
    returns varchar(1000)
    as
    begin
    declare @sql varchar(1000) ,@str varchar(5);
    set @sql=''
    if(charindex('A',@井号)>0) set @str='A1'
    if(charindex('B',@井号)>0) set @str='B1'
    else set @str='X'
    select @sql=@sql+ltrim(层位)+':'+ltrim(str(count(层位)))+'层,'
    from LJAD03 where 井号=@井号 and 类型=@str group by 井号, 层位
    return @sql
    end