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

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

SQL Server數(shù)據(jù)記錄拼接聚合

添加時間:2013-3-18 17:39:32  添加: 思海網(wǎng)絡(luò) 
關(guān)于在SQL Server 2000 中提供了一些聚合函數(shù),例如SUM、AVG、COUNT、MAX和MIN函數(shù)。然而有時候可能要對字符串型的數(shù)據(jù)進(jìn)行拼接。例如,把學(xué)生的選課情況以逗號分割進(jìn)行顯示等等。
這種需求與SQL Server提供的聚合具有同一個性質(zhì),都是原本可能是多個記錄,按某一個字段經(jīng)過匯總處理后變成一條記錄。
例如學(xué)生選課的數(shù)據(jù)視圖(通常是會有學(xué)生表、課程表、學(xué)生選課表關(guān)聯(lián)而成)中的數(shù)據(jù)如下:
學(xué)生號   選擇的課程
050301 數(shù)據(jù)庫原理
050301 操作系統(tǒng)
050302 數(shù)據(jù)庫原理
050302 數(shù)據(jù)結(jié)構(gòu)
050303 操作系統(tǒng)
050303 數(shù)據(jù)結(jié)構(gòu)
050303 面向?qū)ο蟪绦蛟O(shè)計
而需要的數(shù)據(jù)可能是如下的結(jié)構(gòu):
學(xué)號   選擇課程
050301 數(shù)據(jù)庫原理,操作系統(tǒng)
050302 數(shù)據(jù)庫原理,數(shù)據(jù)結(jié)構(gòu)
050303 操作系統(tǒng),數(shù)據(jù)結(jié)構(gòu),面向?qū)ο蟪绦蛟O(shè)計
要實(shí)現(xiàn)這種功能,可以有兩種選擇,一種使用游標(biāo),另一種方法是使用用戶自定義函數(shù)。為了簡單,下面就創(chuàng)建一個StudentCourse表,該表包括學(xué)號和選擇課程兩個字段。
使用游標(biāo)來實(shí)現(xiàn)
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
 

使用用戶自定義函數(shù)來實(shí)現(xiàn)

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 
關(guān)鍵字:SQL Server、數(shù)據(jù)記錄、拼接聚合
分享到:

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