|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Cluster/NDB高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用server|数据在SQLServer2000中供应了一些聚合函数,比方SUM、AVG、COUNT、MAX和MIN函数。但是偶然候大概要对字符串型的数据举行拼接。比方,把先生的选课情形以逗号支解举行显现等等。这类需求与SQLServer供应的聚合具有统一本性质,都是底本多是多个纪录,按某一个字段经由汇总处置后酿成一笔记录。比方先生选课的数据视图(一般是会有先生表、课程表、先生选课表联系关系而成)中的数据以下:学号选择课程
050301数据库道理
050301操纵体系
050302数据库道理
050302数据布局
050303操纵体系
050303数据布局
050303面向工具程序计划而必要的数据多是以下的布局:学号选择课程
050301数据库道理,操纵体系
050302数据库道理,数据布局
050303操纵体系,数据布局,面向工具程序计划要完成这类功效,能够有两种选择,一种利用游标,另外一种办法是利用用户自界说函数。为了复杂,上面就创立一个StudentCourse表,该表包含学号和选择课程两个字段。利用游标来完成
declareC1cursorfor
selectStudentId,CourseNamefromStudentCourse
declare@StudentIdvarchar(10)
declare@CourseNamevarchar(50)
declare@Countint
ifobject_id(TmpTable)isnotnull
droptableTmpTable
createtableTmpTable(StudentIdvarchar(10),CourseNamevarchar(1024))
openC1
fetchnextfromC1into@StudentId,@CourseName
while@@FETCH_STATUS=0
begin
select@Count=count(*)fromTmpTablewhereStudentId=@StudentId
if@Count=0
insertintoTmpTableselect@StudentId,@CourseName
else
updateTmpTableSetCourseName=CourseName+,+@CourseNamewhereStudentId=@StudentId
fetchnextfromC1ino@StudentId,@CourseName
end
closeC1
deallocateC1
select*fromTmpTableorderbyStudentId
利用用户自界说函数来完成
createfunctionGetCourse(@StudentIdvarchar(10))
returnsvarchar(4000)
as
begin
declare@snvarchar(4000)
set@s=
select@s=@s+,+CourseNamefromStudentCourse
where@StudentId=StudentId
set@s=stuff(@s,1,1,)
return@s
endgoselectdistinctStudentId,dbo.GetCourse(StudentId)
from
(
select*fromStudentCourse
)TmpTable支持多线程,充分利用CPU资源 |
|