SQL 合并多行記錄的相同字段值
更新時(shí)間:2010年03月27日 16:41:29 作者:
有時(shí)候會(huì)遇到這種情況,數(shù)據(jù)庫(kù)查詢返回多行記錄,且每行記錄由另外符合條件的多條記錄內(nèi)容合并,遇到這種情況,我們可以選擇下面兩種方式
1.從數(shù)據(jù)庫(kù)中先查詢符合條件的記錄,存放于一個(gè)DataTable中,在使用c#等開(kāi)始遍歷這張表,利用DataRow中的主鍵,再去讀取相應(yīng)的符合條件的多條記錄,合并這些第二次讀取到的記錄內(nèi)容,返回給前面的這個(gè)DataRow數(shù)據(jù)行。這樣做沒(méi)有錯(cuò),但是如果數(shù)據(jù)量大,我們可能面臨無(wú)數(shù)次的打開(kāi)斷開(kāi)數(shù)據(jù)庫(kù)鏈接,速度效率將會(huì)很低。
2.從數(shù)據(jù)庫(kù)中一次讀取數(shù)據(jù)到一張表中返回并顯示到UI層。說(shuō)起來(lái)誰(shuí)都想這么做,但是以前太笨,沒(méi)有去研究這個(gè),今天因?yàn)閿?shù)據(jù)量較大的原因,讓我不得不想些其他辦法來(lái)提高點(diǎn)效率。
Google~hk一下,果真有答案,然后依葫蘆畫(huà)瓢,自己寫(xiě)了一個(gè)
目的是獲取不定量的符合條件的兼職記錄,并將每個(gè)兼職參與項(xiàng)目情況記錄到某幾個(gè)字段當(dāng)中,然后一次返回Table
Create function Fn_GetJobListByPID--創(chuàng)建自定義函數(shù)獲取指定兼職參與的所有項(xiàng)目編號(hào)及項(xiàng)目數(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
引用
--...........................
--做過(guò)項(xiàng)目
left join (select Jobs,ParttimerID,TotalCount From Fn_GetJobListByPID(@ParttimerID)) as j1
on p.ParttimerID=j1.ParttimerID
--在做項(xiàng)目
left join (select CurJobs,ParttimerID,CurCount From Fn_GetCurJobsByPID(@ParttimerID)) as j2
on p.ParttimerID=j2.ParttimerID
where p.ParttimerID=@ParttimerID
2.從數(shù)據(jù)庫(kù)中一次讀取數(shù)據(jù)到一張表中返回并顯示到UI層。說(shuō)起來(lái)誰(shuí)都想這么做,但是以前太笨,沒(méi)有去研究這個(gè),今天因?yàn)閿?shù)據(jù)量較大的原因,讓我不得不想些其他辦法來(lái)提高點(diǎn)效率。
Google~hk一下,果真有答案,然后依葫蘆畫(huà)瓢,自己寫(xiě)了一個(gè)
目的是獲取不定量的符合條件的兼職記錄,并將每個(gè)兼職參與項(xiàng)目情況記錄到某幾個(gè)字段當(dāng)中,然后一次返回Table
復(fù)制代碼 代碼如下:
Create function Fn_GetJobListByPID--創(chuàng)建自定義函數(shù)獲取指定兼職參與的所有項(xiàng)目編號(hào)及項(xiàng)目數(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
引用
復(fù)制代碼 代碼如下:
--...........................
--做過(guò)項(xiàng)目
left join (select Jobs,ParttimerID,TotalCount From Fn_GetJobListByPID(@ParttimerID)) as j1
on p.ParttimerID=j1.ParttimerID
--在做項(xiàng)目
left join (select CurJobs,ParttimerID,CurCount From Fn_GetCurJobsByPID(@ParttimerID)) as j2
on p.ParttimerID=j2.ParttimerID
where p.ParttimerID=@ParttimerID
相關(guān)文章
Sql Server 創(chuàng)建數(shù)據(jù)庫(kù)腳本Create DATABASE
這篇文章主要介紹了Sql Server 創(chuàng)建數(shù)據(jù)庫(kù)腳本語(yǔ)句Create DATABASE的使用,需要的朋友可以參考下2014-08-08安裝sql server2008后再安裝sql 2005找不到本地服務(wù)器的解決方法
這篇文章主要介紹了安裝sql server2008后再安裝sql 2005找不到本地服務(wù)器的解決方法,需要的朋友可以參考下2015-01-01數(shù)據(jù)庫(kù)日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(1)
下面小編就為大家?guī)?lái)一篇數(shù)據(jù)庫(kù)基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你2021-07-07關(guān)于重新組織和重新生成索引sp_RefreshIndex的介紹
本篇文章小編為大家介紹,關(guān)于重新組織和重新生成索引sp_RefreshIndex的介紹。需要的朋友參考下2013-04-04SQL設(shè)置SQL Server最大連接數(shù)及查詢語(yǔ)句
今天遇到了關(guān)于Sql Server最大連接數(shù)(Max Pool Size)的問(wèn)題,后來(lái)通過(guò)查找一些資料解決了,所以想著總結(jié)下關(guān)于SQL Server最大連接數(shù)的內(nèi)容,所以這篇文章主要介紹了SQL設(shè)置SQL Server最大連接數(shù)與查詢語(yǔ)句,有需要的朋友們可以參考借鑒。2016-12-12SQL SERVER 數(shù)據(jù)庫(kù)備份代碼實(shí)例
這篇文章主要介紹了SQL SERVER數(shù)據(jù)庫(kù)備份,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03