數據應用技巧
来源:互联网 发布:泰山学院教务网络 编辑:程序博客网 时间:2024/05/01 06:29
1)having 使用:
select classNo,count(*) from basGrade group by classNo having count(classNo)>=1
2)行轉列:
name subject result
張三語文 100
張三英文 98
張三數學 99
李四語文 99
李四數學 66
李四英文 77
張三語文 100
NULL NULL NULL
declare @sql varchar(4000)
set @sql = 'select Name'
select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
from (select distinct Subject from aaTest) as a
select @sql = @sql+' from aaTest group by name'
print @sql
exec(@sql)
Name 英文語文數學
李四 77 99 66
張三 98 200 99
3)游標的使用
declare @userid varchar(20)
--將temp2值賦給當前游標
declare c_getdata cursor for
select userid from temp2
--打開當前游標,并將游標值賦給變量
open c_getdata
fetch c_getdata into @userid
while(@@fetch_status = 0 )
begin
--當前游標與數據庫中temp表結合
--將結果導入結果數據庫sysuserdept表中
insert into sysuserdept(userid,deptid)
select @userid,deptid from temp
--循環變量值更新
set @userid = null
fetch c_getdata into @userid
end
close c_getdata
deallocate c_getdata
4) SQL2005中异常处理
set xact_abort on --打開try功能
begin try
begin tran
insert into orders()
commit tran
print 'commited'
end try
begin catch
rollback
print 'rolled back'
end catch