友恒通有限公司
insert #temp values(2,2) insert #temp values(3,2) insert #temp values(4,3)
select sum(bb),sum(all bb),sum(distinct bb) from #temp
7.0000 7.0000 5.0000
3、 avg()
avg(ALL expression)=avg(expression) 对所有的非空的值求平均值 avg(DISTINCT expression) 返回唯一非空值的平均值
create table #temp(aa int) insert #temp values (null) insert #temp values (20) insert #temp values (30) insert #temp values (30)
select avg(aa) from #temp --26 select avg(distinct aa) from #temp --25 4、 max()、min()
二、系统函数
1、@@IDENTITY
@@IDENTITY 中包含此语句产生的最后的标识值。若此语句没有影响任何有标识列的表,则 @@IDENTITY 返回 NULL。若插入了多个行,则会产生多个标识值,@@IDENTITY 返回最后产生的标识值。
insert into SF_MZCFK(jssjh, hjxh, czyh, lrrq, patid, hzxm, ybdm, zje,zfyje,yhje,zfje)
select @sjh, @hjxh, @czyh, @now, patid, hzxm, @ybdm, @zjecf,@zfyjecf,@yhjecf,@zfje from #brxxk
if @@error<>0 or @@rowcount=0 begin
select \保存收费处方出错!\ return end
select @xhtemp=@@identity
insert into SF_CFMXK(cfxh, cd_idm, gg_idm, dxmdm, ypmc, ypdm, ypdw, dwxs, ykxs, ypfj, ylsj, ypsl, ts, cfts, zfdj, yhdj)
select @xhtemp, idm, gg_idm, dxmdm, ypmc, xxmdm, ypdw, dwxs, ykxs, ypfj, ylsj, fysl, 1, cfts, zfdj, yhdj
from #sfmx where cfxh=@cfxh
第 9 页 共 53 页
友恒通有限公司
if @@error<>0 begin
select \保存收费处方明细出错!\ return end
2、 @@ERROR
Transact-SQL 语句的执行时,如果语句执行成功,则 @@ERROR 设置为 0。若出现一个错误,则返回一条错误信息。@@ERROR 返回此错误信息代码,直到另一条 Transact-SQL 语句被执行。 update SF_MZCFK set jlzt=0, lrrq=(case when @jsrq='' then @now else @jsrq end), czyh=@czyh where jssjh=@sjh if @@error<>0 begin select \更新门诊处方信息出错!\ return end
8、 @@ROWCOUNT
返回受上一语句影响的行数, 直到另一条 Transact-SQL 语句被执行。 任何不返回行的语句将这一变量设置为 0 . Select @pzlx=pzlx
from YY_YBFLK (nolock) where ybdm=@ybdm
if @@rowcount=0 or @@error<>0 begin
select \患者费用类别不正确!\ return end
9、 CAST 和 CONVERT
CAST ( expression AS data_type )
CONVERT (data_type[(length)], expression [, style])
将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。
第 10 页 共 53 页
友恒通有限公司
三、游标函数
@@FETCH_STATUS
@@FETCH_STATUS返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。0表示FETCH 语句成功。
declare @sqlstr varchar(8000), @sqlstr4 varchar(8000), @sqlsum varchar(8000), @sqltitle varchar(8000), @dxmdm ut_kmdm, @dxmmc ut_mc16
declare cs_sfdxm cursor for select id,name from YY_SFDXMK for read only
select @sqlstr='create table #temp(ksdm ut_ksdm not null,ksmc ut_mc32 not null,' select @sqltitle='',@sqlstr4='',@sqlsum=''
open cs_sfdxm
fetch cs_sfdxm into @dxmdm,@dxmmc while @@fetch_status=0 begin select @sqlstr=@sqlstr+'id'+@dxmdm+' numeric(14,2) default 0,' select @sqlstr4=@sqlstr4+'id'+@dxmdm+'+' select @sqltitle=@sqltitle+'id'+@dxmdm+' \ select @sqlsum=@sqlsum+'sum(id'+@dxmdm+'),' fetch cs_sfdxm into @dxmdm,@dxmmc end
close cs_sfdxm
deallocate cs_sfdxm
四、日期时间函数
1、getdate()
返回当前系统日期和时间
select convert(char(30),getdate(),102) select convert(char(30),getdate(),111) select convert(char(30),getdate(),112) select convert(char(30),getdate(),120) select convert(char(30),getdate(),108)
2005.02.28 2005/02/28 20050228 2005-02-28 21:44:36 20:45:23
2、DATEADD ( datepart , number, date )
第 11 页 共 53 页
友恒通有限公司
select dateadd(day,5,'20050110')
2005-01-15 00:00:00.000
3、DATEDIFF ( datepart , startdate , enddate )
select datediff(day,'20050102','20050110')
8
五、数学函数
SELECT ROUND(150.75, 0) SELECT ROUND(150.75, 0, 1) Select Abs(-23.23)
151.00
150.00—最后的1(即非0将截断表达式) 23.23
六、字符串函数
1、SUBSTRING ( expression , start , length)
select substring(sfrq,1,4)+'年'
+substring(sfrq,5,2)+'月' +substring(sfrq,7,2)+'日' from VW_MZBRJSK
where sfrq between '20050101' and '2005010124' and ybjszt=2 and jlzt in (0,1,2)
2、LEFT ( character_expression , integer_expression )
=substring(character_expression ,1, integer_expression )
3、ltrim、rtrim
4、len返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格。
select len(hzxm), datalength(rtrim(hzxm)),hzxm from ZY_BRSYK 2 3 3 2
4 6 6 4
吴莹 周长生 蔡丽君 钱慧
5、CHARINDEX ( expression1 , expression2)
返回字符串中指定表达式的起始位置, 如果在 expression2 内没有找到 expression1,则 CHARINDEX 返回 0。
select a.sjh,a.blh,b.ysdm,a.ybdm,a.zje from VW_MZBRJSK a(nolock)
where a.sfrq between @ksrq and @jsrq+'24' and a.ybjszt=2
and exists(select 1 from YY_YBBBK b
第 12 页 共 53 页
相关推荐: