SQL 合并多行記錄的相同字段值
更新時間:2010年03月27日 16:41:29 作者:
有時候會遇到這種情況,數(shù)據(jù)庫查詢返回多行記錄,且每行記錄由另外符合條件的多條記錄內容合并,遇到這種情況,我們可以選擇下面兩種方式
1.從數(shù)據(jù)庫中先查詢符合條件的記錄,存放于一個DataTable中,在使用c#等開始遍歷這張表,利用DataRow中的主鍵,再去讀取相應的符合條件的多條記錄,合并這些第二次讀取到的記錄內容,返回給前面的這個DataRow數(shù)據(jù)行。這樣做沒有錯,但是如果數(shù)據(jù)量大,我們可能面臨無數(shù)次的打開斷開數(shù)據(jù)庫鏈接,速度效率將會很低。
2.從數(shù)據(jù)庫中一次讀取數(shù)據(jù)到一張表中返回并顯示到UI層。說起來誰都想這么做,但是以前太笨,沒有去研究這個,今天因為數(shù)據(jù)量較大的原因,讓我不得不想些其他辦法來提高點效率。
Google~hk一下,果真有答案,然后依葫蘆畫瓢,自己寫了一個
目的是獲取不定量的符合條件的兼職記錄,并將每個兼職參與項目情況記錄到某幾個字段當中,然后一次返回Table
Create function Fn_GetJobListByPID--創(chuàng)建自定義函數(shù)獲取指定兼職參與的所有項目編號及項目數(shù)量
(
@ParttimerID int
)
returns @t table(Jobs varchar(5000),ParttimerID int,TotalCount int)
as
begin
declare @sql varchar(5000),@TotalCount int
set @sql=''
set @TotalCount=0
select @sql=@sql+j.JobNo+'-'+j.JobWave+' ',@TotalCount=@TotalCount+1
from ONJB_JobApplication a,ONJB_Jobs j
where a.ParttimerID=@ParttimerID
and a.Result='V'
and a.JobID=j.JobID
insert @t values(@sql,@ParttimerID,@TotalCount)
return
end
引用
--...........................
--做過項目
left join (select Jobs,ParttimerID,TotalCount From Fn_GetJobListByPID(@ParttimerID)) as j1
on p.ParttimerID=j1.ParttimerID
--在做項目
left join (select CurJobs,ParttimerID,CurCount From Fn_GetCurJobsByPID(@ParttimerID)) as j2
on p.ParttimerID=j2.ParttimerID
where p.ParttimerID=@ParttimerID
2.從數(shù)據(jù)庫中一次讀取數(shù)據(jù)到一張表中返回并顯示到UI層。說起來誰都想這么做,但是以前太笨,沒有去研究這個,今天因為數(shù)據(jù)量較大的原因,讓我不得不想些其他辦法來提高點效率。
Google~hk一下,果真有答案,然后依葫蘆畫瓢,自己寫了一個
目的是獲取不定量的符合條件的兼職記錄,并將每個兼職參與項目情況記錄到某幾個字段當中,然后一次返回Table
復制代碼 代碼如下:
Create function Fn_GetJobListByPID--創(chuàng)建自定義函數(shù)獲取指定兼職參與的所有項目編號及項目數(shù)量
(
@ParttimerID int
)
returns @t table(Jobs varchar(5000),ParttimerID int,TotalCount int)
as
begin
declare @sql varchar(5000),@TotalCount int
set @sql=''
set @TotalCount=0
select @sql=@sql+j.JobNo+'-'+j.JobWave+' ',@TotalCount=@TotalCount+1
from ONJB_JobApplication a,ONJB_Jobs j
where a.ParttimerID=@ParttimerID
and a.Result='V'
and a.JobID=j.JobID
insert @t values(@sql,@ParttimerID,@TotalCount)
return
end
引用
復制代碼 代碼如下:
--...........................
--做過項目
left join (select Jobs,ParttimerID,TotalCount From Fn_GetJobListByPID(@ParttimerID)) as j1
on p.ParttimerID=j1.ParttimerID
--在做項目
left join (select CurJobs,ParttimerID,CurCount From Fn_GetCurJobsByPID(@ParttimerID)) as j2
on p.ParttimerID=j2.ParttimerID
where p.ParttimerID=@ParttimerID
相關文章
sql server 2000阻塞和死鎖問題的查看與解決方法
在實際引用當中,數(shù)據(jù)庫阻塞和死鎖在程序開發(fā)過程經常出現(xiàn),下面通過介紹數(shù)據(jù)庫阻塞和數(shù)據(jù)庫死鎖,并提供查看和解決阻塞和死鎖的方法2014-01-01
SQLServer 批量插入數(shù)據(jù)的兩種方法
在SQL Server 中插入一條數(shù)據(jù)使用Insert語句,但是如果想要批量插入一堆數(shù)據(jù)的話,循環(huán)使用Insert不僅效率低,而且會導致SQL一系統(tǒng)性能問題。下面介紹SQL Server支持的兩種批量數(shù)據(jù)插入方法:Bulk和表值參數(shù)(Table-Valued Parameters)。2009-07-07
使用BULK INSERT大批量導入數(shù)據(jù) SQLSERVER
使用BULK INSERT大批量導入數(shù)據(jù) SQLSERVER,需要的朋友可以參考下。2011-12-12
SQL Server 2005 創(chuàng)建簡單的存儲過程--總結分析
本篇文章是對使用SQL Server 2005創(chuàng)建簡單的存儲過程進行了詳細的分析介紹,需要的朋友參考下2013-06-06

