if @type='医药费用监测表'
begin
if charindex('sel',@crdjh)>0
set @crdjh='%'
else
set @crdjh=@crdjh+'%'
select 住院序号,姓名,费用合计,药品费=a11+a12+a13,住院天数=datediff(day,入院日期,通知日期) from yybrryjy
where 结帐日期 between @start and @end and 诊断 like @crdjh
select @okflag='OK'
end
begin
if charindex('sel',@crdjh)>0
set @crdjh='%'
else
set @crdjh=@crdjh+'%'
select 住院序号,姓名,费用合计,药品费=a11+a12+a13,住院天数=datediff(day,入院日期,通知日期) from yybrryjy
where 结帐日期 between @start and @end and 诊断 like @crdjh
select @okflag='OK'
end
set @crdjh='%' --把变量@crdjh设置为%
begin
if charindex('sel',@crdjh)>0 --判断SEL如果在@CRDJH里面
set @crdjh='%'
else
set @crdjh=@crdjh+'%' --如果不在就加个通配符 select 住院序号,姓名,费用合计,药品费=a11+a12+a13,住院天数=datediff(day,入院日期,通知日期) from yybrryjy
where 结帐日期 between @start and @end and 诊断 like @crdjh --通过上面的条件判断进行查询
select @okflag='OK' --设定okflag参数值为OK
end
if @type='医药费用监测表'
begin
if charindex('sel',@crdjh)>0 --含有sel字符
set @crdjh='%' --把变量@crdjh设置为%
else
set @crdjh=@crdjh+'%' --把变量@crdjh设置加%
select 住院序号,姓名,费用合计,药品费=a11+a12+a13,住院天数=datediff(day,入院日期,通知日期)
from yybrryjy
where 结帐日期 between @start and @end and 诊断 like @crdjh
---查询在表yybrryjy 内查找结帐日期在@start 和@end 之间并且诊断内含有@crdjh 字符的语句select @okflag='OK' -----把变量@okflag设置加OK
end
begin
if charindex('sel',@crdjh)>0 --检测@crdjh中是否有sel
set @crdjh='%' --有
else
set @crdjh=@crdjh+'%' --没有
select 住院序号,姓名,费用合计,药品费=a11+a12+a13,住院天数=datediff(day,入院日期,通知日期) from yybrryjy
where 结帐日期 between @start and @end and 诊断 like @crdjh
select @okflag='OK'
end
begin
if charindex('sel',@crdjh)>0 --判断是否含sel字符
set @crdjh='%' --设置初始值
else
set @crdjh=@crdjh+'%' --不包含设置初始值
select 住院序号,姓名,费用合计,药品费=a11+a12+a13,住院天数=datediff(day,入院日期,通知日期) ----查询语句不解释from yybrryjy
where 结帐日期 between @start and @end and 诊断 like @crdjh
select @okflag='OK'
end
else
---条件不成立时
a11 a12 a13 是表yybrryjy的字段
where 结帐日期 between @start and @end and 诊断 like @crdjh
但是我的表头是 住院号 姓名 住院总费用 药品费 住院天数 怎么改过来了?
select 住院序号 as 住院号,姓名,费用合计 as 住院总费用,药品费=a11+a12+a13,住院天数=datediff(day,入院日期,通知日期)
from yybrryjy
where 结帐日期 between @start and @end and 诊断 like @crdjh