亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

SQL Server 開發之數據記錄拼接聚合

添加時間:2013-5-16 17:20:19  添加: 思海網絡 
在SQL Server 2000 中提供了一些聚合函數,例如SUM、AVG、COUNT、MAX和MIN函數。然而有時候可能要對字符串型的數據進行拼接。例如,把學生的選課情況以逗號分割進行顯示等等。
這種需求與SQL Server提供的聚合具有同一個性質,都是原本可能是多個記錄,按某一個字段經過匯總處理后變成一條記錄。
例如學生選課的數據視圖(通常是會有學生表、課程表、學生選課表關聯而成)中的數據如下:
學號   選擇課程
050301 數據庫原理
050301 操作系統
050302 數據庫原理
050302 數據結構
050303 操作系統
050303 數據結構
050303 面向對象程序設計
而需要的數據可能是如下的結構:
學號   選擇課程
050301 數據庫原理,操作系統
050302 數據庫原理,數據結構
050303 操作系統,數據結構,面向對象程序設計
要實現這種功能,可以有兩種選擇,一種使用游標,另一種方法是使用用戶自定義函數。為了簡單,下面就創建一個StudentCourse表,該表包括學號和選擇課程兩個字段。
使用游標來實現
declare  C1  cursor for
  select StudentId,CourseName from StudentCourse
declare @StudentId  varchar(10)
declare @CourseName varchar(50)
declare @Count      int
if object_id('TmpTable') is not null                
drop table TmpTable
create table TmpTable(StudentId varchar(10),CourseName varchar(1024))
open  C1
fetch next from  C1 into @StudentId,@CourseName
while @@FETCH_STATUS = 0
  begin
    select @Count = count(*) from TmpTable where StudentId=@StudentId
    if @Count = 0
      insert into TmpTable select @StudentId, @CourseName     
    else
      update TmpTable Set CourseName = CourseName + ',' + @CourseName where StudentId=@StudentId    
    fetch next from  C1 ino @StudentId,@CourseName
  end
close C1
deallocate C1
select * from TmpTable order by StudentId
 

使用用戶自定義函數來實現

create function GetCourse(@StudentId varchar(10))
returns varchar(4000)
as
begin
declare @s nvarchar(4000)   
  set  @s=''   
  select   @s=@s+','+ CourseName from StudentCourse
    where @StudentId=StudentId
  set   @s=stuff(@s,1,1,'')   
  return @s
end
go
select distinct StudentId,dbo.GetCourse(StudentId)     
  from      
  (   
    select  *  from  StudentCourse     
  )  TmpTable 
關鍵字:SQL Server、數據庫、記錄
分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站